错误“在使用Microsoft Fakes的C#测试项目中未在/ reference选项中指定extern别名'snh'

时间:2018-03-06 21:25:14

标签: .net unit-testing microsoft-fakes

我有一个使用微软假货的C#测试项目。 项目引用的外部库( abc.dll )最近更新为 .net standard 2.0 。 将 abc.dll 库引用更新到最新版本后,测试项目不再构建,也不会为该库生成虚假程序集( dll )。  我在生成的 .csproj 文件中看到以下错误。

  

在/ reference选项

中未指定外部别名'snh'

我查看了生成的。 csproj 文件,别名snh对应于 System.Net.Http

测试项目的目标是.net 4.6.1,我正在使用最新的VS 2017

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

当前这是一个未解决的问题,该项目的目标是.Net Framework 4.7.1,并引用了netstandard库。它在这里被跟踪:https://github.com/dotnet/sdk/issues/2254

我将提供对我有用的解决方法: 作为参考,针对假货问题发布的解决方法是将以下内容放入Directory.Build.targets:

<ItemGroup Condition="'@(_NETStandardLibraryNETFrameworkLib)' != ''">
  <SnhReference Include = "@(_NETStandardLibraryNETFrameworkLib)" Condition="'%(_NETStandardLibraryNETFrameworkLib.FileName)' == 'System.Net.Http'" />

  <Reference Remove="%(SnhReference.FileName)" Condition="'@(SnhReference)' != ''"/>
  <Reference Include="%(SnhReference.FileName)" Condition="'@(SnhReference)' != ''">
    <HintPath>%(SnhReference.Identity)</HintPath>
    <Private>false</Private>
    <Aliases>snh</Aliases>
  </Reference>
</ItemGroup>