c# - Тип «Объект» определен в сборке, на которую нет ссылок(NET Standard 2.0/.NET Framework 4.6.1)




.net-standard .net-4.6.1 (4)

После установки NET Core 2.0 preview 2 и обновления до последней версии Visual Studio 2017 Preview (15.3) ссылки теперь устанавливаются автоматически.

В соответствии с этой проблемой GitHub , имеющей дело с аналогичной проблемой, вы должны вручную добавить ссылку на пакет NETStandard.Library.NETFramework в вашем проекте .NET Framework * .

Либо установите его через консоль NuGet:

Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview1-25305-02 -Pre

Несколько дней назад был выпущен предварительный просмотр NET Core / Standard 2.0, если вы обновили его, потребуется следующая версия:

Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview2-25405-01 -Pre

или через магазин NuGet (установите флажок Показать предварительные версии ) и найдите NETStandard.Library.NETFramework

Это тогда разрешит ссылки, ошибки должны исчезнуть.

* Joperezr заявляет, что Microsoft планирует позволить инструменту справиться с этим позже.

На данный момент вы должны вручную добавить ссылку на этот пакет, что может раздражать, но в будущем мы планируем, что инструмент сделает это за вас.

Я использую предварительный просмотр .NET Standard 2.0 , на котором основаны мои библиотеки классов.

После проблем с несколькими пакетами NuGet, особенно в отношении извлечения архива, я решил перенести свои проекты .NET Core 2.0 Console обратно в .NET Framework 4.6.1.

.NET Framework 4.6.1 должен реализовывать спецификацию .NET Standard 2.0 - по разным источникам. Особенно дотнет / стандартный GitHub Repo .

К сожалению, миграция на .NET Framework привела к следующим ошибкам во всех проектах .NET Framework Console:

Ошибка CS0012 Тип «Объект» определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку 'netstandard, версия = 2.0.0.0, Culture = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51'

Где Object может быть чем угодно: Enum , Task , ...

Как мне ссылаться на библиотеки классов .NET Standard 2.0 с .NET Framework (4.6.1), не получая таких ошибок?



Попробуйте добавить ссылку netstandard в web.config следующим образом:

<system.web> 
   <compilation debug="true" targetFramework="4.7.1" > 
      <assemblies> 
         <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/> 
      </assemblies> 
    </compilation> 
</system.web>

У меня была эта проблема в моем тестовом проекте при использовании TestServer для тестирования моих представлений MVC.

Тестовый проект, веб-проект и связанные библиотеки были все netcoreapp2.0 .

Обновление vs2017 до 15.5 не сработало, а редактирование моего теста .csproj со следующими предлагаемыми исправлениями не сработало:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

<ItemGroup><Reference Include="netstandard" /></ItemGroup>

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

Согласно https://github.com/aspnet/Razor/issues/1212#issuecomment-297885722 однако, это сработало:

  <Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''">
    <ItemGroup>
      <DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)', '.deps.json'))" />
    </ItemGroup>    
    <Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" />
  </Target>






.net-4.6.1