2012-05-24 159 views
8

我试图建立一个过程,我的T4模板将在构建服务器转化(Visual Studio中未安装有)上运行TextTransform.exe(T4)。构建服务器

我读过所有的在线参考,但不能得到一个明确的来源,说明如何做到这一点。

具体来说,下面是我遇到的2个问题:

  • TextTransform.exe抛出一个错误失踪DLL:

C:\ TeamCity的\ buildAgent \工作\ AppSettings的。 tt(0,0):错误CS0006: 编译转换:元数据文件 'Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, 版本= 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a' 找不到

使用GACUTIL修复了这个问题,但我想避免这一步注册DLL文件。而Visual Studio的外部运行时

  • 使用Host.ResolvePath(串)方法不返回任何值。

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

任何帮助将得到这个运行的理解。

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

参考我检查:

+0

我将MS Connect上的一个问题作为他们在MSDN上的文章(我发布的引用中的最后一项)似乎过时并且无法正常工作。 –

+0

这方面的进展如何?即使所有TextTransform程序集都在GAC中,我们仍然会在没有安装VS的服务器上得到确切的异常。 –

+0

您必须将组件安装到GAC中。我遇到过同样的问题。 – Augi

回答

2

我认为,问题是,你正在使用的主机特定功能,例如与resolvePath。我会尝试

的一种方法是确保模板不使用与resolvePath而是依靠相对路径从一个众所周知的位置。

这个著名的位置,可以通过被称为:

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

如果你不喜欢强迫开发者设置环境变量我会考虑使用,如果环境变量“智能”与resolvePath的想法可用,否则依赖于Host.ResolvePath。

希望这有助于

+0

对于我的简单场景,只需能够解析模板(.tt文件)的完整路径即可。输入文件通常放在它旁边,或者放在相对于它的路径下。 –

1

沟渠Microsoft TextTransform。exe文件并使用MonoDevelop附带的免费版本,该版本不具有外部依赖性。

在这里看到:T4 without Visual Studio?

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中。