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

本文关键字:复制 VS 2013 构建 某处 edm data dll Microsoft | 更新日期: 2023-09-27 18:18:04

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

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

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

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

VS是否从机器上的"标准位置"拾取诸如此类的dll ?我搜索了我的硬盘驱动器,找到了从2.0到2.6.2的各种版本的DLL。其中最令人怀疑的似乎是:C:'Program Files'Microsoft ASP.NET'ASP。. NET MVC 4'Packages'Microsoft.Data.Edm.5.2.0'lib'net40

是否有任何地方我可以告诉VS不从一些随机位置得到这个DLL ?

谢谢

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

尝试使用详细的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环境变量中获取其他版本。