类型[类型]存在于[Assembly1]和[netstandard 2.0 assembly]

时间:2017-08-13 16:05:47

标签: c# .net entity-framework-core .net-standard-2.0

我无法让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

5 个答案:

答案 0 :(得分:3)

更新: Visual Studio 2017 15.3并且2.0.0 SDK已经发布。使用这些版本来消除此类冲突。

这似乎是使用预览工具和&#34; RTM&#34;混合使用时出现的构建问题之一。所有部件发布之前的包裹。

要在撰写本文时获得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的引用。