.NET 6单元测试项目无法加载项目引用问题求助
原因分析与解决方案
核心原因
当DeploymentEnabled=True时,MSTest会将测试相关文件复制到临时部署目录,而AssemblyResolution配置仅在测试运行阶段生效,测试发现阶段(Discovery)不会读取该配置。这导致发现阶段无法定位未复制到测试输出目录的Project1.dll,进而无法识别测试类和方法。
解决方案
方案1:禁用部署(推荐)
修改.runsettings中的DeploymentEnabled为False,让测试直接在项目输出目录运行,此时AssemblyResolution配置会在发现和运行阶段都生效:
<DeploymentEnabled>False</DeploymentEnabled>
方案2:配置测试发现阶段的解析路径
若必须启用部署,可通过环境变量指定发现阶段的程序集搜索路径:
在.runsettings的RunConfiguration节点中添加环境变量:
<RunSettings> <!-- 原有配置 --> <RunConfiguration> <EnvironmentVariables> <VSTEST_ASSEMBLY_RESOLUTION_SEARCH_PATH>C:\myapp\sources\bin</VSTEST_ASSEMBLY_RESOLUTION_SEARCH_PATH> </EnvironmentVariables> </RunConfiguration> </RunSettings>
该环境变量会让测试发现阶段在指定路径下查找依赖程序集。
方案3:调整项目引用私有属性
若无需严格控制依赖复制,保持<Private>True即可,但会将Project1.dll复制到测试输出目录,可能不符合你的部署规范。
内容的提问来源于stack exchange,提问作者ahlun
相关产品推荐
相关产品推荐

