1

私は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を除いて、ローカルビルドに対してGenerateDocumentationBeforeBuildターゲットも呼び出されず、ビルドサーバーを使用したビルドも呼び出されません。私は何かが足りないのですか?正しいDefaultTarget="Build"ですか?これをに変更しようとしましたDefaultTarget="DesktopBuild"が、呼び出すmsbuildとさまざまなエラーが発生しました(MSB4018)。プロジェクトファイルには、ターゲットファイル$(VCTargetsPath)\Microsoft.Cpp.targetsもインポートされます。このインポートを削除すると、GenerateDocumentationターゲットは呼び出されますが、他のターゲット(ResourceCompile私も必要なものを含む)は呼び出されません。どういうわけか両方を使用できますか?

前もって感謝します...

4

1 に答える 1

0

ビルドタスクの最後にこれを追加するのはどうですか...

    <CallTarget Targets="GenerateDocumentation"></CallTarget>
  </Target>   
于 2012-04-30T11:35:43.047 に答える