9

我正在尝试设置一个过程,在该过程中我的 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

我检查过的参考资料:

4

3 回答 3

2

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

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

这个众所周知的位置可以通过以下方式知道:

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

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

希望这可以帮助

于 2012-05-24T18:08:44.133 回答
1

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

请参见此处:没有 Visual Studio 的 T4?

于 2012-05-25T18:15:51.943 回答
0
  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 中。

于 2015-03-18T05:48:59.343 回答