【问题标题】:Running TextTransform.exe (T4) on a build server在构建服务器上运行 TextTransform.exe (T4)
【发布时间】:2012-05-31 00:37:48
【问题描述】:

我正在尝试设置一个流程,在该流程中我的 T4 模板将在构建服务器上进行转换(那里没有安装 Visual Studio)。

我已阅读所有在线参考资料,但无法获得说明如何执行此操作的明确来源。

具体来说,这是我遇到的两个问题:

  • TextTransform.exe 抛出关于缺少 DLL 的错误:

C:\TeamCity\buildAgent\work\AppSettings.tt(0,0):错误 CS0006: 编译转换:元数据文件 'Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, 版本=10.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a' 找不到

使用 gacutil 注册 DLL 文件修复了这个问题,虽然我想避免这一步。

  • 在 Visual Studio 外部运行时,使用 Host.ResolvePath(string) 方法不会返回任何值。

此方法有助于确定模板用作其数据源的 .txt 文件的完整路径。没有它,在构建服务器上找不到这个文件。

任何帮助都将不胜感激。

编辑:打开一个 MS CONNECT 问题:https://connect.microsoft.com/VisualStudio/feedback/details/744137/texttransform-exe-does-not-work-without-vs2010-installed

我检查过的参考资料:

【问题讨论】:

  • 我将在 MS Connect 上提出一个问题,因为他们在 MSDN 上的文章(我发布的参考资料中的最后一项)似乎已过时且无法正常工作。
  • 这方面有什么进展吗?即使所有 TextTransform 程序集都在 GAC 中,我们仍然在没有安装 VS 的服务器上得到确切的异常。
  • 您必须将程序集安装到 GAC 中。我有同样的问题。

标签: c# .net visual-studio-2010 code-generation t4


【解决方案1】:

我认为问题在于您使用的是主机特定功能,例如 ResolvePath。

我会尝试的一种方法是确保模板不使用 ResolvePath,而是依赖于来自知名位置的相对路径。

这个众所周知的位置可能被以下人知道:

1. Convention
2. Environment variable
3. Registry
4. SQL Server
5. Web Service
6. And others

如果您不喜欢强制开发人员设置环境变量的想法,我会考虑制作一个“智能”解析路径,该路径使用环境变量(如果可用),否则依赖 Host.ResolvePath。

希望对你有帮助

【讨论】:

  • 对于我的简单场景,能够解析模板(.tt 文件)完整路径就足够了。输入文件通常会放在它旁边,或者放在相对于它的路径下。
【解决方案2】:

放弃 Microsoft TextTransform.exe 并使用 MonoDevelop 附带的免费的,没有外部依赖项。

请看这里:T4 without Visual Studio?

【讨论】:

    【解决方案3】:
    1. 将以下目录从您的开发机器复制到构建服务器。

      来源(您的机器):

      %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

      目标(构建服务器):

      %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

      <version> 是最新版本。

    2. 将所有程序集 (.dll) 从您的开发机器复制到构建服务器。

      来源(您的机器): %WinDir%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.*

      目标(构建服务器):

      %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

      其中* 是目录名的其余部分。

    3. 使用Gacutil /i将所有复制的程序集安装到构建服务器的GAC中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      相关资源
      最近更新 更多