单元测试项目 Up.UnitTests 在构建期间失败,并出现此构建错误

错误 CS0430:未在/reference 选项中指定外部别名“snh” 错误 CS0234:命名空间“snh”中不存在类型或命名空间名称“System”(是否缺少程序集引用?)

命名空间“snh”中不存在类型或命名空间名称“System”

我猜测上述错误是由于 System.Net.Http 引起的。跟版本不同有关系吗?如何解决这个问题。任何帮助将不胜感激。

请您参考如下方法:

我也遇到了这个 CS0430 错误。在我的场景中,问题是由于更新 NSubstitute 引起的依赖性引起的。我像下面这样更新了我的 *.fakes 文件以添加诊断,并看到问题是 System.Net.Http 就像您观察到的那样。

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true"> 
  <Assembly Name="ClassLibrary1"/> 
</Fakes> 

在此之后,我试图通过慢慢删除新的依赖项来找到问题的根本原因,并发现当 System.Threading.Tasks.Extensions Nuget 引用存在时,我会得到构建错误。在升级过程中,NSubstitute 添加了 System.Threading.Tasks.Extensions。在你的场景中,它可能是一个类似的依赖问题,它与 System.Net.Http 没有直接关系。

更新:我找到了this issue on the dotnet/sdk repo解决了这个问题。在您的测试项目中,添加以下 Directory.Build.targets。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
 
  <Target Name="PrivateFakesAfterFacadesSwitch" 
          Condition="'$(ImplicitlyExpandNETStandardFacades)' == 'true' and $(AssemblyName.EndsWith('.Fakes'))" 
          AfterTargets="ImplicitlyExpandNETStandardFacades" DependsOnTargets="ImplicitlyExpandNETStandardFacades"> 
 
    <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> 
 
  </Target> 
 
</Project> 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!