构建时,我收到一系列如下错误:
CSC:错误 CS1703:导入了具有相同标识的多个程序集:'C:\Program Files (x86)\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Collections.Concurrent.dll' 和 'C : \Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.1\Facades\System.Collections.Concurrent.dll"。删除重复引用之一。
当我尝试添加 System.Threading.Tasks.Dataflow 包时发生错误。它在一个空项目上重现:我们创建一个控制台应用程序,添加一个包 - 就是这样,它不会。
由 Visual Studio 2015 使用。
此错误是由可移植类库和 .NET Standard 支持机制之间的冲突引起的。
第一个在文件
MSBuild\14.0\Bin\Microsoft.NetFramework.CurrentVersion.targets
中,第二个在文件中MSBuild\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.NETFramework.targets
。他们做同样的事情——他们在项目中添加对“虚拟”平台无关程序集的引用,这样编译器就不用担心它们的缺失。而且由于它们做同样的事情,它们向程序集添加了相同的引用。在这种情况下,始终添加对 PCL 的引用,并且仅在存在此类依赖项时才添加对 .NET Standard 的引用。
如果您的项目没有对 PCL 库的引用,那么正确的解决方案是在项目文件中写入以下密钥:
这将禁用第一个机制,一切都会正常工作。
如果项目中存在这样的依赖,那么编译时可能会出现如下错误:
以下程序集可能会出现类似问题(它们包含在 PCL 中,但不包含在 .NET 标准中):
在这种情况下,您可以尝试创建一个 Target,而不是上面的解决方案: