访问TFS的C#自定义应用程序

时间:2020-03-06 14:54:22  来源:igfitidea点击:

我们构建了一个供内部使用的自定义应用程序,该应用程序可以访问TFS。我们为此使用Microsoft库(例如Microsoft.TeamFoundation.dll)。

当将此应用程序部署到已经安装了Team Explorer或者VS的PC上时,一切都很好。将其部署到未安装此功能的PC上时,它将失败。

我们包含了所有必需的DLL,但是我们得到的错误是检测到Common Language Runtime,并且程序无效。错误发生在中度无害的行上:

TeamFoundationServer myServer = new TeamFoundationServer(“ourserver.ourdomain.com”);

有趣的是,流行的TFSAdmin工具(当我们将所需的DLL放入exe目录时)会产生相同的错误。

我还注意到,访问TFS的许多其他自定义应用程序(例如http://hinshelwood.com/tfsstickybuddy.aspx)也需要安装Team Explorer或者VS才能正常工作。

显然,DLL不够,在进行这些安装时会发生一些不可思议的事情。有人知道这是什么吗?有人知道如何使魔术发生吗?

解决方案

试试这个清单:

http://geekswithblogs.net/jjulian/archive/2007/06/14/113228.aspx

并尝试将其放入GAC中。可能是GAC中的安全信任问题程序集被授予了更高的CAS级别。

编写使用TFS对象模型的应用程序的"官方支持"方式是在计算机上安装Team Explorer。这对于维护目的特别重要,即确保将VSTS的Service Pack应用到客户端计算机时,TFS API也将得到升级。 TFS API没有重新分发权,因此它们不应与应用程序一起提供。

顺便说一句,还要注意,如果我们正在编写使用TFS OM的应用程序,请确保仅将其编译为" X86"而不是" Any CPU"。 TFS API程序集都标记为X86,但是如果应用程序被标记为" Any CPU",则在x64计算机上,它将由64位CLR加载,但是当需要动态加载TFS程序集时,它将失败。

祝你好运,

马丁