如何解决'System.Runtime'和'netstandard'中都存在类型'AssemblyCompanyAttribute'?

时间:2019-05-05 20:02:26

标签: c# entity-framework asp.net-core visual-studio-code ef-database-first

我正在一起尝试Visual Studio代码,.net core 2.2和entityframework。

我执行以下步骤:

1)创建新的sln

  

dotnet new sln --name MySln

2)创建一个webapi:

  

dotnet新的webapi --name api

3)创建一个类库:

  

dotnet新的类库--name Api.DB

添加对项目的引用:

  

dotnet sln“ MyApi.sln”添加“ api / api.csproj”

     

dotnet sln“ 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>

问题我不明白,但是我在类库中遇到以下错误:

  

类型'AssemblyCompanyAttribute'在两个'System.Runtime'中都存在,   版本= 4.1.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a'和   'netstandard,版本= 2.0.0.0,文化=中性,   PublicKeyToken = cc7b13ffcd2ddd51'(CS0433)[Api.DB]

enter image description here

编辑:

忘了提到,当我像这样将所有的包打包到类库中时:

<!-- <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命令行工具与此项目一起添加可执行文件   针对引用此内容的.NET Core或.NET Framework的项目   项目,并使用--startup-project将其设置为启动项目;   或者,将此项目更新为跨目标.NET Core或.NET Framework。   有关将EF Core Tools与.NET Standard一起使用的更多信息   项目,请参见https://go.microsoft.com/fwlink/?linkid=2034781

1 个答案:

答案 0 :(得分:0)

一段时间以来,我一直在努力解决错误,最终我找到了解决方案。

@Lesiak在评论中给了我链接之后,我将以下内容放入了我的类库中:

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

这解决了原始错误。

但是 我遵循的指南是针对.net core 2.0的,因此我在classlib中包括了以下内容

<RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion> 

但是我的目标是.netcore 2.2,所以我不得不将targetframework更改为:

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