我有一个 C#/.NET 4.0 项目,它是一个 DLL 库,其中包含一些用于 TFS 2010 构建工作流的自定义事件。该项目编译并且一切都在我们的开发箱上运行。
在我们的构建服务器上,我们最近安装了 Visual Studio 2012 并发现我们的构建现在因此错误而失败
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.Client.dll: Assembly 'Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' uses 'Microsoft.TeamFoundation.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'Microsoft.TeamFoundation.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
我到处搜索,找不到如何/为什么所有对 Microsoft.TeamFoundation.Client.dll 的调用在我们的 DEV 框上解析为 v 10.0.0,现在在构建服务器上解析为 11.0.0.0。我找不到程序集绑定(bind)重定向,没有发布者政策,什么都没有!
我只需要强制 MSBuild 和构建过程引用构建服务器上所有相关 DLL 的 v 10.0.0 而不是 v 11.0.0.0。任何帮助将不胜感激。
请注意,这与“XAML 工作流”问题无关,而是编译一个恰好引用 Microsoft.TeamFoundation.Client.dll 10.0.0.0 的 DLL 项目
最佳答案
在记事本中打开自定义事件库的 .csproj。更新 TFS 程序集引用,删除特定于版本的元数据。
即使您将“特定版本”属性设置为 False,它仍然可能具有附加到引用的特定版本元数据:
<Reference Include="Microsoft.TeamFoundation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(Dependencies)\TeamFoundationClient\Microsoft.TeamFoundation.dll</HintPath>
</Reference>
删除元数据应该可以正确构建该项目。
<Reference Include="Microsoft.TeamFoundation">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(Dependencies)\TeamFoundationClient\Microsoft.TeamFoundation.dll</HintPath>
</Reference>
关于visual-studio-2012 - Visual Studio 2012 重定向 Microsoft.TeamFoundation.Client.dll 的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070572/