Msbuild 如何使.NET核心单元测试项目使用备用的中间输出路径?

Msbuild 如何使.NET核心单元测试项目使用备用的中间输出路径?,msbuild,.net-core,mstest,visual-studio-2017,dotnet-cli,Msbuild,.net Core,Mstest,Visual Studio 2017,Dotnet Cli,安装Visual Studio 2017社区后,我尝试创建一个.NET核心单元测试项目。使用默认输出路径,一切正常。但是将中间输出路径更改为除。\obj以外的任何其他路径会导致以下错误 正在启动测试执行,请稍候。。。 找不到源“C:\temp\vs\cl1\p4\bin\Debug\netcoreapp1.1\p4.dll”的testhost.dll。确保测试项目具有包“microsoft.testplatform.testhost”的nuget引用 复制步骤: 打开dotnet cli提示符

安装Visual Studio 2017社区后,我尝试创建一个.NET核心单元测试项目。使用默认输出路径,一切正常。但是将中间输出路径更改为除。\obj以外的任何其他路径会导致以下错误

正在启动测试执行,请稍候。。。 找不到源“C:\temp\vs\cl1\p4\bin\Debug\netcoreapp1.1\p4.dll”的testhost.dll。确保测试项目具有包“microsoft.testplatform.testhost”的nuget引用

复制步骤:

  • 打开dotnet cli提示符
  • md p4
  • cd p4
  • dotnet新mstest
  • 编辑p4.csproj将中间输出路径更改为类似于obj2\的路径

    <PropertyGroup>
        <TargetFramework>netcoreapp1.1</TargetFramework>
        <BaseIntermediateOutputPath>obj2\</BaseIntermediateOutputPath>
    </PropertyGroup>
    
    
    netcoreapp1.1
    obj2\
    
  • 网络还原

  • 网络构建
  • 网络测试
  • 同样的问题也发生在mstest和xunit项目中

    更改输出路径(OutputPath)似乎可以正常工作。只是中间输出路径(baseintermediateoutpath和intermediateoutpath)似乎是个问题

    如错误所示,向Microsoft.TestPlatform.TestHost添加显式包引用似乎没有帮助


    在Visual Studio IDE中,同样的问题(可能)表现为测试资源管理器工具窗口中没有出现单元测试。

    它如何帮助您拥有不同的基本中间输出路径?@Ignas,我的公司总是用3个顶级目录组织代码库:src(源代码管理下的所有内容,包括.sln和.csproj)、obj(中间输出路径)和bin(输出路径)。这基本上只是一种偏好。但也有一些小优势,比如只递归搜索源代码,去掉一个顶级容器以确保完整的干净构建,以及不必维护广泛的.gitignore(或等效文件)源代码管理排除列表。我觉得应该向@C.Dragon76报告此错误,因为没有为测试项目生成
    testproject.deps.json
    testproject.runtimeconfig.dev.json
    bin\Debug\netcoreapp1.1
    )。您可以在从
    dotnet test-d:log.txt
    生成的
    log.txt
    中看到这一点(启用诊断信息)。建议首先确认上述内容。然后诊断生成步骤。
    dotnet build-v:diag
    ,查看是否正确设置了IntermediateOutPath或BaseIntermediateOutPath,并将
    *.json
    文件复制到输出目录。类似问题: