Microsoft.data.edm.dll是在VS 2013中的构建中从“某处”复制的

时间:2014-08-15 13:10:06

标签: c# asp.net dll visual-studio-2013

我正与另一位使用VS2013和VSO的开发人员合作。

解决方案在他的机器上运行良好但我的抱怨: “无法加载文件或程序集'Microsoft.Data.Edm'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)”

我们已经将此解决了以下事实:解决方案中的1个项目正在将此DLL的6.5.0版本复制到构建时的bin文件夹中,该文件夹将覆盖解决方案其他部分所需的6.5.2版本。

我们不确定它在哪里找到这个版本的DLL,因为它只发生在我的构建上。我们正在使用各种nuget包,但所有这些都是最新的,并且在我们的机器之间是相同的。

VS是否从机器上的“标准位置”获取此类DLL?我搜索了我的硬盘,发现DLL的各种版本从2.0到2.6.2。这些中最可疑的似乎是: C:\ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Data.Edm.5.2.0 \ lib \ net40

我可以告诉VS不要从某个随机位置获取此DLL吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试使用详细的MSBuild信息(工具 - >选项 - >项目和解决方案 - >构建并运行)构建它,然后复制输出并搜索Microsoft.Data.Edm.dll以查找其复制位置和位置是来自。

要强制复制正确的版本,可以将程序集重定向添加到项目的app.config文件中(如果您使用过NuGet,则可能已有此部分):

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-5.6.2.0" newVersion="5.6.2.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

这将强制在编译时使用正确的版本,并且不会尝试从GAC或系统PATH环境变量中获取其他版本。