ошибка CS0430: внешний псевдоним 'snh' не был указан в параметре / reference [Up.UnitTests \ obj \ x64 \ Debug \ Fakes \ wsc \ f.csproj] - PullRequest
0 голосов
/ 11 сентября 2018

Модульный тестовый проект Up.UnitTests терпит неудачу во время сборки, с этим ошибки сборки

ошибка CS0430: внешний псевдоним 'snh' не был указан в параметре / reference ошибка CS0234: тип или имя пространства имен 'System' не существует в пространстве имен 'snh' (отсутствует ссылка на сборку?)

Тип или имя пространства имен 'System' не существует в пространстве имен 'snh'

Я предполагаю, что вышеупомянутые ошибки происходят из-за System.Net.Http. Это как-то связано с разными версиями? Как исправить эту проблему. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 31 мая 2019

Я также столкнулся с этой ошибкой CS0430.В моем случае проблема возникла из-за зависимости, вызванной обновлением NSubstitute.Я обновил свой файл * .fakes, как показано ниже, чтобы добавить диагностику и увидеть, что проблема была в System.Net.Http, как вы заметили.

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

После этого я попытался найти причину проблемы с помощьюмедленно удаляя новые зависимости и обнаруживая, что при наличии ссылки Nuget на System.Threading.Tasks.Extensions я получаю ошибку сборки.Во время обновления NSubstitute добавил System.Threading.Tasks.Extensions.В вашем сценарии это может быть похожая проблема с зависимостями, которая не связана напрямую с System.Net.Http.

Обновление: Я обнаружил эту проблему в dotnet /SDK РЕПО , который решает проблему.В ваш тестовый проект добавьте следующий 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>
...