【问题标题】:C# Custom Applications that Access TFS访问 TFS 的 C# 自定义应用程序
【发布时间】:2010-09-14 04:20:32
【问题描述】:

我们构建了一个自定义应用程序,供内部使用,用于访问 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)也需要安装 Team Explorer 或 VS 才能工作。

显然,DLL 是不够的,当这些安装发生时会发生一些神奇的事情。有人知道这是什么吗?有谁知道如何让魔法发生?

【问题讨论】:

  • 您确定 TFS 客户端程序集没有未包含的外部依赖项,或者它们没有被 Windows 安全性锁定吗?

标签: c# tfs


【解决方案1】:

编写使用 TFS 对象模型的应用程序的“官方支持”方式是在机器上安装 Team Explorer。这对于服务目的尤其重要 - 即确保当 VSTS 的服务包应用于客户端计算机时,TFS API 也会得到升级。 TFS API 没有再分发权,因此它们不应随您的应用程序一起提供。

顺便说一句 - 另请注意,如果您正在编写使用 TFS OM 的应用程序,请确保仅将其编译为“X86”而不是“任何 CPU”。 TFS API 程序集都标记为 X86,但如果您的应用程序标记为“任何 CPU”,那么在 x64 机器上,它将由 64 位 CLR 加载,但当需要动态加载 TFS 程序集时,它将失败。

祝你好运,

马丁。

【讨论】:

  • 请注意,使用 TFS 2010 对象模型的代码不再需要编译为 X86,因为 2010 API 现在适用于两个版本的 CLR。​​
【解决方案2】:

试试这个列表:

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

还尝试将它们放入 GAC。这可能是一个安全信任问题 - GAC 中的程序集被授予更高的 CAS 级别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2019-06-19
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多