1

我们的 Web 应用程序大量使用了 TFS API。我们使用 TFS 2010 API dll 开发和编译它。我们还设置 SpecificVersion=False。

问题是,当我们部署到具有 TFS 2012 而不是 TFS 2010 的服务器时,我们会收到以下错误:

无法加载文件或程序集 'Microsoft.TeamFoundation.Client,版本 = 10.0.0.0,......等。该系统找不到指定的文件。

有什么办法可以缓解这种情况吗?TFS 2012 安装到 GAC 中,我们说“SpecificVersion=False”的事实应该告诉应用程序使用 dll 的 2012(版本 11)而不是 2010(版本 10)。正确的??

任何帮助表示赞赏...

4

1 回答 1

2

如果程序集是强名称签名的,则特定版本不起作用。微软几乎可以肯定强名签署了他们的程序集。

您的网站必须使用 abindingRedirect将所有版本从 v10 重定向到 v11。例如:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="Microsoft.TeamFoundation.Client"
                              publicKeyToken="xxxxxxxxxxxxx"
                              culture="neutral" />
            <bindingRedirect oldVersion="10.0.0.0"
                             newVersion="11.0.0.0"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

确保将 更新publicKeyToken为正确的值。


或者,您可以针对 TFS SDK 的 v11 版本重新编译网站以避免绑定重定向,但是它仅适用于 TFS SDK 的 v11。

于 2012-08-03T18:29:59.173 回答