T4预编译在构建?

时间:2017-01-27 13:03:49

标签: t4

二手MS Studio社区2015和SP2。

我需要在构建时重新编译T4。

我确实添加到项目中:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\TextTemplating\Microsoft.TextTemplating.targets" />

<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>

这股力量重新编译T4&#39。

但编译有问题 - 而不是使用为特定T4指定的CustomToolNamespace使用常见的RootNamespace。结果是一场彻底的灾难。

我在项目文件中使用CustomToolNamespace的位置,但没有正面结果。

指出我在哪里看 - 仍然尝试使用* .csproj或开始寻找调试Microsoft.TextTemplating.targets?

或者简单地生成&#39; tempalaterecompilation.bat&#39;并在预构建时运行它?我非常不喜欢这种方式。

2 个答案:

答案 0 :(得分:0)

我检查了一个Microsoft.TextTemplating.targets。 它包含命名空间

的定义
<PropertyGroup>
  <!-- Unless another namespace has been specified, use the project namespace as the
  default namespace from pre-processed files. -->
  <PreprocessTemplateDefaultNamespace Condition=" $(PreprocessTemplateDefaultNamespace)=='' ">$(RootNamespace)</PreprocessTemplateDefaultNamespace>
</PropertyGroup>

因此,故意使用RootNamespace。

我需要更改以获得使用为模板定义的CustomToolNamespace的目标吗?

答案 1 :(得分:0)

我确实找到了问题的临时解决方案。

几乎没有可以从中获取命名空间的地方。

其中一个 - “内容”部分中的ClassNamespace。如果指定了这个值,则给定的值将用作命名空间。

但这是解决方法,我仍然在寻找使用* .targets的解决方案。