类型 [Type] 存在于 [Assembly1] 和 [netstandard 2.0 assembly] 中
The type [Type] exists in both [Assembly1] and [netstandard 2.0 assembly]
我无法让 Microsoft.EntityFrameworkCore 2.0 与 NETStandard.Library 2.0
一起工作
Error CS0433 The type 'AttributeUsageAttribute' exists in both 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and '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,也会发生这种情况
Error CS1703 Multiple assemblies with equivalent identity have been imported: 'D:\Users\maksymiuk_a.nuget\packages\netstandard.library.0.0\build\netstandard2.0\ref\System.Threading.Tasks.dll' and 'D:\Users\maksymiuk_a.nuget\packages\system.threading.tasks.3.0\ref\netstandard1.3\System.Threading.Tasks.dll'. Remove one of the duplicate references. ClassLibrary1 D:\Contrived\Contrived\ClassLibrary1\ClassLibrary1\CSC
可能不是最好的主意,但尝试通过右键单击引用并在其中找到它来手动删除对 System.Runtime 的引用。
更新: Visual Studio 2017 15.3 and the 2.0.0 SDK 已发布。使用这些版本来消除此类冲突。
这似乎是在所有部分发布之前混合使用预览工具和 "RTM" 包时发生的构建问题之一。
要在撰写本文时获得对 2.0.0 的最佳支持,请执行以下操作之一:
仅使用相同的 preview2 版本的 nuget 包,已安装的 .NET Core SDK 和最新的 VS 2017 15.3 preview(15.3 预览版 7)。
使用latest VS 2017 15.3 Preview (Preview 7), install the 2.0.0 (not preview2) .NET Core Sdk from the CI build output at https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0.0/dotnet-sdk-2.0.0-win-x64.exe(Microsoft 的 2.0.0 docker 图像使用相同的构建输出位置)
此要求的原因是 2.0.0 SDK 知道这些冲突并从项目中删除冲突引用(System.*.dll
在这种情况下)。
即使使用 DOT NET Core 2+
,此问题仍然会发生,这是因为您在项目中引用的包依赖于同一包的不同版本,特别是同一命名空间。
我知道有 2.5 个解决方案:
1) 如果您控制这两个包,则更新它们以确保它们使用相同版本的依赖项(或更改该依赖项版本之一的名称空间,如:Your.Thing.v3.Models
)
2) 如果您可以在 GitHub
等开源网站上找到其中一个或两个软件包,您可以下载它们并更新它们以使用该依赖项的相同版本(或来自上面的选项 1)
2.5) 如果您无法控制或无法访问这些包的源代码,并且我意识到这并不是真正的解决方案...(因此是 .5),那么最后一个选择是停止使用其中一个软件包。
如果有其他方法,我很想知道。
对我来说,删除对两个程序集的引用并重新添加它们很有效。
在解决方案资源管理器中展开项目的 References
--> 右键单击错误的程序集 -> Remove
.
然后右击References
-> Add Reference...
-> 勾选刚刚删除的程序集。
然后重建。
在我的例子中,我在 web.config 文件中添加了多个引用。
删除其中之一后,问题得到解决,并且在本地 IIS 服务器下也能正常工作
我无法让 Microsoft.EntityFrameworkCore 2.0 与 NETStandard.Library 2.0
一起工作Error CS0433 The type 'AttributeUsageAttribute' exists in both 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and '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,也会发生这种情况
Error CS1703 Multiple assemblies with equivalent identity have been imported: 'D:\Users\maksymiuk_a.nuget\packages\netstandard.library.0.0\build\netstandard2.0\ref\System.Threading.Tasks.dll' and 'D:\Users\maksymiuk_a.nuget\packages\system.threading.tasks.3.0\ref\netstandard1.3\System.Threading.Tasks.dll'. Remove one of the duplicate references. ClassLibrary1 D:\Contrived\Contrived\ClassLibrary1\ClassLibrary1\CSC
可能不是最好的主意,但尝试通过右键单击引用并在其中找到它来手动删除对 System.Runtime 的引用。
更新: Visual Studio 2017 15.3 and the 2.0.0 SDK 已发布。使用这些版本来消除此类冲突。
这似乎是在所有部分发布之前混合使用预览工具和 "RTM" 包时发生的构建问题之一。
要在撰写本文时获得对 2.0.0 的最佳支持,请执行以下操作之一:
仅使用相同的 preview2 版本的 nuget 包,已安装的 .NET Core SDK 和最新的 VS 2017 15.3 preview(15.3 预览版 7)。
使用latest VS 2017 15.3 Preview (Preview 7), install the 2.0.0 (not preview2) .NET Core Sdk from the CI build output at https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0.0/dotnet-sdk-2.0.0-win-x64.exe(Microsoft 的 2.0.0 docker 图像使用相同的构建输出位置)
此要求的原因是 2.0.0 SDK 知道这些冲突并从项目中删除冲突引用(System.*.dll
在这种情况下)。
即使使用 DOT NET Core 2+
,此问题仍然会发生,这是因为您在项目中引用的包依赖于同一包的不同版本,特别是同一命名空间。
我知道有 2.5 个解决方案:
1) 如果您控制这两个包,则更新它们以确保它们使用相同版本的依赖项(或更改该依赖项版本之一的名称空间,如:Your.Thing.v3.Models
)
2) 如果您可以在 GitHub
等开源网站上找到其中一个或两个软件包,您可以下载它们并更新它们以使用该依赖项的相同版本(或来自上面的选项 1)
2.5) 如果您无法控制或无法访问这些包的源代码,并且我意识到这并不是真正的解决方案...(因此是 .5),那么最后一个选择是停止使用其中一个软件包。
如果有其他方法,我很想知道。
对我来说,删除对两个程序集的引用并重新添加它们很有效。
在解决方案资源管理器中展开项目的 References
--> 右键单击错误的程序集 -> Remove
.
然后右击References
-> Add Reference...
-> 勾选刚刚删除的程序集。
然后重建。
在我的例子中,我在 web.config 文件中添加了多个引用。 删除其中之一后,问题得到解决,并且在本地 IIS 服务器下也能正常工作