【问题标题】:Error "The extern alias 'snh' was not specified in a /reference option " in a C# test project using Microsoft Fakes在使用 Microsoft Fakes 的 C# 测试项目中出现错误“未在 /reference 选项中指定外部别名 'snh'”
【发布时间】:2018-03-06 21:25:14
【问题描述】:

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

外部别名 'snh' 未在 /reference 选项中指定

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

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

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

【问题讨论】:

    标签: .net unit-testing microsoft-fakes


    【解决方案1】:

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

    我将包括对我有用的解决方法: 作为参考,针对 Fakes 问题发布的解决方法是将以下内容放入 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>
    

    【讨论】:

    • 像 OP 一样,我正在使用一个使用 MS Fakes 的普通 .NET 4.6.1 项目。
    • 如果你有 .NET 4.6.1 没关系,你可能会引用一个 .NET 标准库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    相关资源
    最近更新 更多