编译错误/ DNX多个引用/ Nuget锁定文件错误

时间:2016-02-04 21:54:43

标签: c# visual-studio visual-studio-2015 asp.net-core dnx

在此代码的较旧版本工作正常的计算机上,从源代码控制中提取同一项目的新版本,运行nuget package restore(写入project.lock.json文件),然后尝试构建输出错误,如下所示:

Error   CS1703  
Multiple assemblies with equivalent identity have been imported: 
'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll' and 
'C:\Users\[username]\.dnx\packages\System.Runtime\4.0.0\ref\dotnet\System.Runtime.dll'. 
Remove one of the duplicate references.     

我了解它试图告诉我的内容,System.Runtime.dll被导入了两次。我不明白的是如何让Visual Studio 2015修复它。

我能在项目中找到的唯一区别是project.lock.json文件。将工作项目与非工作项目进行比较会显示这样的结果。工作文件位于左侧:

comparison of project.lock.json

因此,根据我的理解,右边的错误锁定文件告诉NuGet尝试使用新的.NET Core内容,而左边的那个是说"使用.NET Framework 4.5&#34 ;

该项目正在使用" ASP.NET 5 RC1 Update 1"。我也对此感到困惑,ASP.NET 5应该使用新的.NEt核心内容而不是#34; Framework 4.5"?如果是这种情况那么"不正确"锁定文件似乎对我来说是正确的,因为它的目标是" ref / dotnet"?

将工作project.lock.json文件复制到非工作文件上可以构建项目,但这不是我书中问题的解决方案。这个项目或机器环境导致这种情况发生的原因是什么?有些地方需要卸载吗?安装?改变?

编辑以包含project.json:

{
  "version": "1.0.0-*",
  "description": "Model Class Library",
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "frameworks": {
    "net451": { }
  },
  "dependencies": {
    "EntityFramework.Core": "7.0.0-rc1-final",
    "System.ComponentModel.Annotations": "4.0.11-beta-23516"
  }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

  • 删除project.lock.json文件。
  • 在cmd提示符或PowerShell窗口中,运行dnvm use 1.0.0-rc1-final
  • 在同一个PowerShell窗口中,导航到项目的根目录并运行dnu restore

我怀疑工作的project.lock.json文件是针对与1.0.0-rc1-update1不同的运行时版本构建的。