使用新的NetSDK项目格式时,在正确构建之前运行MS Fakes

mic*_*ael 7 c# msbuild csproj microsoft-fakes visual-studio-2019

我正在尝试使Microsoft Fakes与我的单元测试项目(net47)一起正常工作,其中我的项目文件格式正在使用新的NetSDK格式。

使用Visual Studio 2019,我可以添加一个Fakes程序集,并且看起来一切正常,直到我们尝试在构建代理上构建/运行测试为止。看起来,当您编译/构建项目时,会生成伪造的程序集,但它们是并行执行的,或者是在构建后执行的(我不确定)。在运行Visual Studio 2019 Enterprise的开发计算机上也会发生相同的问题。


我注意到,如果不存在FakesAssemblies文件夹,则在构建过程中会创建一个文件夹,但是编译会失败,因为没有发现* .Fakes命名空间。第二个编译/构建有效,因为现在已填充FakesAssemblies文件夹。需要注意的一件事是,我将Microsoft Fakes的dll文件放入了我们公司私人提要中的NuGet包中,这样我就可以将其作为NuGet包而不是引用来拉下来。

SampleUnitTests.csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net47</TargetFramework>
    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" />
    <PackageReference Include="Microsoft.QualityTools.Testing.Fakes" Version="16.0.28621.142" />
    <PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
    <PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
  </ItemGroup>

  <ItemGroup>
    <Fakes Include="Fakes\*.fakes" />
    <Reference Include="FakesAssemblies\*.dll" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)