T4模板文件在C#项目下会被IDE自动识别,但是我不知道它们如何可以集成到C++项目中(除了使用makefile之外)。
有什么想法吗?
T4模板文件在C#项目下会被IDE自动识别,但是我不知道它们如何可以集成到C++项目中(除了使用makefile之外)。
有什么想法吗?
由于这是一个vcproj文件(C ++),因此MSBuild任务将无法工作,而需要使用vcbuild。最简单的方法是添加自定义生成步骤如下所示,以编译tt。
"C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\1.1\TextTransform.exe" -out "$(ProjectDir)\VSProject.cpp" -I "$(ProjectDir)" "$(ProjectDir)\VSProject.tt"
我花了数小时研究上述MSBuild任务解决方案,对于托管代码而言非常好,但是我无法看到任何用于C ++的方法(除了将vcproj转换为csproj)。
其他答案中列出的命令部分是不正确的,因为文件TextTransform.exe
已经被移动到一个新目录下:即devenv
根目录下,例如:
C:\Progra~1\Visual Studio 2017\Enterprise\Common7\IDE
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)xxx.cpp" "$(ProjectDir)xxx.tt"
其中xxx
是您的.tt
模板文件的文件名。
C:\Program Files...\Common7\IDE
在开发者控制台中是在 DevEnvDir
环境变量下的。 - MHebes在尝试了上述一些方法(发现它们不适用于我的特定情况)后,我采取了不同的方法,其他人可能会发现有帮助。
与其为了让VS接受C++项目中的T4模板而进行斗争,我向我的解决方案中添加了一个单独的(空的)C#项目。我将我的模板文件放在解决方案的根目录下,并从C#项目中添加了一个链接。我从我的C++项目中#include生成的.h文件。
我使用模板生成了一个版本字符串,该字符串随每次构建更新。我向VS添加了AutoT4工具,以便该字符串在解决方案的每次构建时都会更新。