如何在未安装 Visual Studio 的 PC 上运行 VS 2015 中的 TextTransform.exe?

2024-02-10

我复制了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.

我读了这篇文章构建过程中的代码生成 https://msdn.microsoft.com/en-us/library/ee847423.aspx.
我尝试复制“配置您的计算机”部分中描述的所有 dll-s。
但我没有找到该文件夹$(ProgramFiles)\MSBuild\Microsoft\VisualStudio\v*.0\TextTemplating在我安装了 VS 2015 的电脑上。
我将文章中描述的其他两个文件夹中的文件复制到包含以下内容的文件夹中TextTransform.exe在我没有安装 VS 2015 的电脑上。

运行后TextTransform.exe错误仍然发生。

这个错误应该如何修复? 我怎样才能得到TextTransform.exe run?

UPDATE

I call 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

如果您的 T4 模板包含 C#/VB 代码,Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 and 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

Note: 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>

When TextTransform.exe第一次启动时,它会检查以下位置的文件夹%VS140COMNTOOLS%\..\IDE\PrivateAssemblies如果不存在则抛出异常。 所以,要么创建一个%VS140COMNTOOLS%相应地指向路径的环境变量,或创建一个空的..\IDE\PrivateAssemblies相对于 工作目录在哪里TextTransform.exe将被调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在未安装 Visual Studio 的 PC 上运行 VS 2015 中的 TextTransform.exe? 的相关文章

随机推荐