我们为内部使用构建了一个访问TFS的自定义应用程序.我们使用Microsoft库(例如Microsoft.TeamFoundation.dll).
将此应用程序部署到已安装了Team Explorer或VS的PC时,一切都很好.当它部署到没有安装此功能的PC时,它会失败.
我们包含了所有必需的DLL,但我们得到的错误是"检测到公共语言运行时和无效程序".错误发生在中等无害的线上:
TeamFoundationServer myServer = new TeamFoundationServer(“ourserver.ourdomain.com”);
有趣的是,流行的TFSAdmin工具(当您将所需的DLL放入exe目录时)会产生相同的错误.
我还注意到许多其他访问TFS的自定义应用程序(例如http://hinshelwood.com/tfsstickybuddy.aspx)也需要安装团队资源管理器或VS才能工作.
很明显,DLL是不够的,并且在这些安装发生时会发生一些魔术.有人知道这是什么吗?谁知道如何让魔术发生?
编写使用TFS对象模型的应用程序的"官方支持"方式是在计算机上安装Team Explorer.这对于服务目的尤其重要 - 即确保当VSTS的Service Pack应用于客户端计算机时,TFS API也会升级.TFS API没有重新分发权利,因此它们不应随您的应用程序一起提供.
顺便说一句 - 另请注意,如果您正在编写使用TFS OM的应用程序,请确保仅将其编译为"X86"而不是"任何CPU".TFS API程序集都标记为X86,但如果您的应用程序标记为"任何CPU",那么在x64计算机上它将由64位CLR加载,但是当需要动态加载TFS程序集时,它将失败.
祝好运,
马丁.