在构建服务器上运行TextTransform.exe(T4)

lys*_*cid 8 .net c# t4 code-generation visual-studio-2010

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

我已经阅读了所有在线参考文献,但无法获得显示如何执行此操作的明确来源.

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

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

C:\ TeamCity的\ buildAgent \工作\ AppSettings.tt(0,0):错误CS0006:编译转型:元数据文件"Microsoft.VisualStudio.TextTemplating.Interfaces.10.0,版本= 10.0.0.0,文化=中立,公钥= 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

参考资料我检查过:

Jus*_*mer 2

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

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

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

1. Convention
2. Environment variable
3. Registry
4. SQL Server
5. Web Service
6. And others
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助