17

我有一个 VS 项目,其中包含:

  1. TextTransform在 a上运行template.tt以生成的预构建操作generated.cs

  2. generated.cs列为要编译的文件之一(即在项目文件列表中)

当我构建项目时,执行预构建操作,generated.cs重新创建,但 VS 编译以前的版本generated.cs(我猜它在构建过程开始时加载到内存中)。

如何使构建使用新版本generated.cs(即在预构建操作中生成的版本)?如何强制构建顺序?

请注意,文本转换输入是动态的,因此无法在设计时完成。

4

2 回答 2

4

我认为您不需要自定义预构建操作。只需将“.tt”文件添加到您的项目并将其“自定义工具”属性设置为“TextTemplatingFileGenerator”。您可能希望确保将 *.generated.cs 文件也添加到项目中,但我认为 VS 会处理这个问题。

于 2010-01-05T17:34:34.777 回答
4

现在有办法解决这个问题!Oleg Sych 在他的博客上发表了一篇文章,详细介绍了如何使构建时转换工作。

这是来源:https ://web.archive.org/web/20140116193428/http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/

基本上,您只需在项目文件中包含 T4 构建目标并将 TransformOnBuild 属性设置为 true。

以下是相关摘录:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
  </PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" />

请注意,Microsoft.TextTemplating.targets 文件必须包含在 Microsoft.CSharp.targets 之后。

于 2014-02-17T03:41:14.340 回答