我无法让Microsoft.EntityFrameworkCore 2.0与NETStandard.Library 2.0一起使用
错误CS0433类型' AttributeUsageAttribute'存在于System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'和' netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51' Contrived.Model.Schema D:\ Contrived \ Contrived \ Framework \ Contrived.Model.Schema \ Attributes \ EntityColumnAttribute.cs
我的.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="NETStandard.Library" Version="2.0.0" />
</ItemGroup>
</Project>
如果我创建一个新的解决方案和netstandard 2.0库然后添加entityframeworkcore 2.0,也会发生这种情况
错误CS1703已导入具有等效标识的多个程序集:&#39; D:\ Users \ maksymiuk_a.nuget \ packages \ netstandard.library \ 2.0.0 \ build \ netstandard2.0 \ ref \ System.Threading.Tasks的.dll&#39;和&#39; D:\ Users \ maksymiuk_a.nuget \ packages \ system.threading.tasks \ 4.3.0 \ ref \ netstandard1.3 \ System.Threading.Tasks.dll&#39;。删除其中一个重复的引用。 ClassLibrary1 D:\ Contrived \ Contrived \ ClassLibrary1 \ ClassLibrary1 \ CSC
答案 0 :(得分:3)
更新: Visual Studio 2017 15.3并且2.0.0 SDK已经发布。使用这些版本来消除此类冲突。
这似乎是使用预览工具和&#34; RTM&#34;混合使用时出现的构建问题之一。所有部件发布之前的包裹。
要在撰写本文时获得2.0.0的最佳支持,请执行以下操作之一:
仅使用与nuget软件包相同的preview2版本,已安装的.NET Core SDK和最新的VS 2017 15.3 preview(15.3预览版7)。
使用latest VS 2017 15.3 Preview(预览7),从https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0.0/dotnet-sdk-2.0.0-win-x64.exe的CI构建输出安装2.0.0(非preview2).NET Core Sdk(使用相同的构建输出位置)通过微软的2.0.0泊坞窗图片)
此要求的原因是2.0.0 SDK知道这些冲突并修改了项目中冲突的引用(本例中为System.*.dll
)。
答案 1 :(得分:1)
即使使用DOT NET Core 2+
,这个问题仍然可能发生,并且当您在项目中引用的软件包依赖于同一软件包的不同版本,特别是相同的名称空间时,会导致此问题。
我知道有2.5种解决方案:
1)如果你控制两个软件包,那么更新它们以确保它们使用相同版本的依赖项(或更改该依赖项的某个版本的名称空间,如:Your.Thing.v3.Models
)
2)如果您可以在GitHub
这样的开源网站上找到这些软件包中的一个或两个,您可以下载它们并更新它们以使用相同版本的依赖项(或选项1中的命名空间) ,上面)
2.5)如果您无法控制或无法访问这些软件包的来源,我意识到这不是一个真正的解决方案......(因此.5),那么最后一个选项是停止使用其中一个包。
如果有另一种方式,我很乐意了解它。
答案 2 :(得分:0)
对我而言,它删除了对两个程序集的引用并重新添加它们。
在解决方案资源管理器中展开您的项目References
- &gt;右键单击有故障的程序集 - &gt; Remove
。
然后右键点击References
- &gt; Add Reference...
- &gt;检查刚删除的程序集的框。
然后重建。
答案 3 :(得分:0)
就我而言,我在web.config文件中添加了多个引用。 删除其中一个后,可以解决问题并在本地IIS服务器下也可以正常工作
答案 4 :(得分:-1)
可能不是最好的想法,但尝试通过右键单击引用并在那里找到它来手动删除对System.Runtime的引用。