2017-01-27 9 views
0

SP2でMSスタジオコミュニティ2015を使用しました。ビルド時のT4プリコンパイル?

ビルド時にT4を再コンパイルする必要があります。

私はプロジェクトに追加します:T4のを再コンパイルするためにこの力

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

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

しかし、コンパイルには問題があります。特定のT4に対して与えられたCustomToolNamespaceを使用する代わりに、一般的なRootNamespaceが使用されます。結果は完全な災害です。

私は、プロジェクトファイル内のCustomToolNamespaceの場所と一致しますが、肯定的な結果は得られません。

* .csprojで試してみるか、Microsoft.TextTemplating.targetsのデバッグを開始しますか?

または単に 'tempalaterecompilation.bat'を生成してプリビルドで実行しますか?私はこのように非常に嫌いです。

答えて

0

Microsoft.TextTemplating.targetsをチェックします。 それはとても、RootNamespaceが意図的に使用されている

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

名前空間

の定義が含まれています。

テンプレートに対して定義されたCustomToolNamespaceを使用するためにtargetを取得するために変更する必要があるものはありますか?

0

問題の一時的な解決方法が見つかりました。

名前空間を取得できる場所はほとんどありません。

1つ - コンテンツセクションのClassNamespace。これが指定されている場合、値は名前空間として使用されます。

これは回避策ですが、私はまだ* .targetsを使用して解決策を探しています。