Как разрешить Тип «AssemblyCompanyAttribute» существует в «System.Runtime» и «netstandard»? - PullRequest
0 голосов
/ 05 мая 2019

Я экспериментирую с Visual Studio Code, .net core 2.2 и entityframework в одном миксе.

Я делаю следующие шаги:

1) создаю новый sln

dotnet new sln --name MySln

2)создать вебапи:

dotnet новый вебапи - имя api

3) создать класс lib:

dotnet new classlib -имя Api.DB

Добавить ссылки на проекты:

dotnet sln "MyApi.sln" добавить "api / api.csproj"

dotnetsln "MyApi.sln" добавить "Api.DB / Api.DB.csproj"

dotnet добавить ссылку ../Api.DB/Api.DB.csproj

Вclasslib Я добавляю следующее:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
     <RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4"/>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4"/>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4"/>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="2.0.0-preview1-final"/> 
  </ItemGroup>
     <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
  </ItemGroup>
</Project>

Проблема Я не понимаю этого, но я получаю следующую ошибку в classlib:

Тип 'AssemblyCompanyAttribute' существует в обеих 'Системах.Runtime, версия = 4.1.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'и' netstandard, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51 '(CS0433) [Api.DB]

enter image description here

EDIT:

забыл упомянуть, что при комментировании всех моих пакетов в classlib примерно так:

<!-- <PackageReference Include="Microsoft.EntityFrameworkCore" Version="*"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="*"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="*"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="*"/> -->

Тогда ошибка исчезает, что смущает меня еще больше?есть ли ошибка с пакетами?

Когда я удаляю их и пытаюсь изменить мой контекст БД, я получаю:

Запуск проекта 'Api.DB.csproj' нацелен на фреймворк '.NETStandard'.С этой платформой не связано время выполнения, и проекты, нацеленные на нее, не могут быть выполнены напрямую.Чтобы использовать средства командной строки .NET Framework Entity Framework с этим проектом, добавьте исполняемый проект, ориентированный на .NET Core или .NET Framework, который ссылается на этот проект, и установите его в качестве запускаемого проекта с помощью --startup-project;или обновите этот проект до перекрестного целевого .NET Core или .NET Framework.Для получения дополнительной информации об использовании EF Core Tools с проектами .NET Standard см. https://go.microsoft.com/fwlink/?linkid=2034781

1 Ответ

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

Я уже некоторое время работаю над исправлением своей ошибки и наконец-то нашел решение.

После того, как @Lesiak дал мне ссылку в комментариях, я добавил в свою библиотеку следующее:

  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup> 
  <PropertyGroup>
    <EnableDefaultRazorTargetAssemblyInfoAttributes>false</EnableDefaultRazorTargetAssemblyInfoAttributes>
  </PropertyGroup> 

Это решило исходную ошибку.

Однако Руководство, которому я следовал, было для .net core 2.0, поэтому я включил следующее в classlib

<RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion> 

Но я нацеливаюсь на .netcore 2.2, поэтому мне пришлось изменить целевой фреймворк на:

  <TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks>
...