我正在尝试设置一个进程,我的T4模板将在构建服务器上进行转换(Visual Studio未安装在那里)。
我已经阅读了所有在线参考文献,但无法获得显示如何执行此操作的明确来源。
具体来说,这是我遇到的两个问题:
C:\ TeamCity \ buildAgent \ work \ AppSettings.tt(0,0):错误CS0006: 编译转换:元数据文件 “Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a' 无法找到
使用 gacutil 注册DLL文件修复了这个问题,虽然我想避免这一步。
此方法有助于确定模板用作其数据源的.txt文件的完整路径。如果没有它,则无法在构建服务器上找到此文件。
任何帮助都会受到赞赏。
编辑:打开了MS CONNECT问题:https://connect.microsoft.com/VisualStudio/feedback/details/744137/texttransform-exe-does-not-work-without-vs2010-installed
我已查看参考资料:
答案 0 :(得分:2)
我认为问题在于您使用的是ResolvePath等主机特定功能。
我尝试的一种方法是确保模板不使用ResolvePath,而是依赖于来自众所周知位置的相对路径。
这个众所周知的位置可以通过以下方式获知:
1. Convention
2. Environment variable
3. Registry
4. SQL Server
5. Web Service
6. And others
如果您不喜欢强制开发设置环境变量的想法,我会考虑使用环境变量“智能”解析路径(如果可用),否则依赖于Host.ResolvePath。
希望这有帮助
答案 1 :(得分:1)
抛弃Microsoft TextTransform.exe并使用MonoDevelop附带的免费外接程序。
答案 2 :(得分:0)
将以下目录从开发计算机复制到构建服务器。
来源(您的机器):
%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0
目的地(构建服务器):
%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0
<version>
是最新版本。
将所有程序集(.dll)从开发计算机复制到构建服务器。
来源(您的机器):
%WinDir%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.*
目的地(构建服务器):
%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0
其中*
是目录名称的其余部分。
使用Gacutil /i将所有复制的程序集安装到构建服务器的GAC中。