私はmsbuildプロジェクトファイルとtfs2010を拡張することに固執しています。私が達成したいのは、ビルド後にソースコードのドキュメントを自動的に生成することです。Webを検索したところ、ファイルMicrosoft.TeamFoundation.Build.targetsが、デスクトップビルドまたはチームビルドのいずれかでカスタマイズ可能な多くのターゲットを定義していることがわかりました。そのうちの1つは、GenerateDocumentation
使用したい-Targetです。私が抱えている問題は、このファイルをインポートしたにもかかわらず、オーバーロードされたターゲットがmsbuildによって呼び出されないことです。私のvcxproj-Fileのヘッダーは次のようになります。
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
この後、ステートメントにチームビルドターゲットファイルを含めます
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets"/>
このプロジェクトファイルの最後で、TeamFoundationターゲットファイルで提案されているように、いくつかのターゲットをオーバーロードしようとしました。
<Target Name="GenerateDocumentation">
<Message Text="GenerateDocumentation invoked" Importance="high"/>
</Target>
<Target Name="BeforeBuild">
<Message Text="BeforeBuild invoked" Importance="high" />
</Target>
<Target Name="AfterBuild">
<Message Text="AfterBuild invoked" Importance="high" />
</Target>
ただし、AfterBuild
-Targetを除いて、ローカルビルドに対してGenerateDocumentation
もBeforeBuild
ターゲットも呼び出されず、ビルドサーバーを使用したビルドも呼び出されません。私は何かが足りないのですか?正しいDefaultTarget="Build"
ですか?これをに変更しようとしましたDefaultTarget="DesktopBuild"
が、呼び出すmsbuild
とさまざまなエラーが発生しました(MSB4018)。プロジェクトファイルには、ターゲットファイル$(VCTargetsPath)\Microsoft.Cpp.targets
もインポートされます。このインポートを削除すると、GenerateDocumentation
ターゲットは呼び出されますが、他のターゲット(ResourceCompile
私も必要なものを含む)は呼び出されません。どういうわけか両方を使用できますか?
前もって感謝します...