ser*_*gtk 5 msbuild dependencies code-generation runtime-error visual-studio-2015
我TextTransform.exe从安装了VS 2015 Update 3的PC从本地复制C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\14.0\TextTransform.exe到未安装VS 2015的PC。
TextTransform.exe 被称为构建脚本的一部分。
当我运行它时,出现以下错误:
Error: Exception has been thrown by the target of an invocation.
我阅读了《构建过程中的代码生成》一文。
我试图复制“配置计算机”一节中描述的所有dll-s。
但是我没有$(ProgramFiles)\MSBuild\Microsoft\VisualStudio\v*.0\TextTemplating在装有VS 2015的PC上找到该文件夹。
我将本文所述的其他两个文件夹中的文件复制到了TextTransform.exe未安装VS 2015的PC上的文件夹。
运行后TextTransform.exe,错误仍然发生。
该错误应如何解决?我要如何TextTransform.exe跑步?
更新
我TextTransform.exe从MSBuild脚本调用。因此,如果可以在MSBuild中实现执行文本转换功能的任何方法,尽管需要更新构建脚本,但对我来说是可以接受的。
我想这样的解决方案可能存在,因为有一些示例在MSBuild执行转换而无需直接调用的情况下TextTransform.exe,例如上述文章。
花了一段时间才解开,但我有工作TextTransform.exe!以下是我认为必要的步骤(注意:仅使用 VS2015 和 .NET 4.6.1 进行了测试):
首先,在构建计算机上,将以下所有文件复制到C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0(或您希望该工具结束的任何位置):
C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.14.0\v4.0_14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.TextTemplating.14.0.dll
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0\Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0\Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0\Microsoft.VisualStudio.TextTemplating.Interfaces.14.0.dll
C:\Program Files (x86)\MsBuild\14.0\Bin\Microsoft.CodeAnalysis.dll
C:\Program Files (x86)\MsBuild\14.0\Bin\Microsoft.CodeAnalysis.CSharp.dll
C:\Program Files (x86)\MsBuild\14.0\Bin\Microsoft.CodeAnalysis.VisualBasic.dll
C:\Program Files (x86)\MsBuild\14.0\Bin\System.Reflection.Metadata.dll
Run Code Online (Sandbox Code Playgroud)
如果您的 T4 模板包含 C#/VB 代码,则Microsoft.VisualStudio.TextTemplating.Interfaces.10.0和Microsoft.VisualStudio.TextTemplating.Interfaces.11.0
程序集将从动态创建的应用程序域中解析,并且不会在TextTransform.exe. 它们必须在 GAC 中注册。在管理员命令提示符下,执行:
gacutil -i Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll
gacutil -i Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll
Run Code Online (Sandbox Code Playgroud)
注意:gacutil通常可以在 中找到C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools。
TextTransform.exe.config在绑定重定向旁边创建一个文件TextTransform.exe(可能需要也可能不需要,具体取决于您的 .NET 版本):
<?xml version ="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="1.1.37.0" newVersion="1.1.36.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
首次启动时TextTransform.exe,它会检查位于的文件夹%VS140COMNTOOLS%\..\IDE\PrivateAssemblies,如果不存在则抛出异常。因此,要么创建一个%VS140COMNTOOLS%指向相应路径的环境变量,要么创建一个相..\IDE\PrivateAssemblies对于TextTransform.exe将从中调用的工作目录的空环境变量。
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |