我正在一起尝试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]
编辑:
忘了提到,当我像这样将所有的包打包到类库中时:
<!-- <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
答案 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>