2012-02-01 4 views
7

ソリューションのすべてのプロジェクトのXMLドキュメントを作成しようとしていますが、オプションがプロジェクトプロパティでチェックされていなくてもキーポイント)。MSBUILD(プロジェクトに触れることなく)ソリューション内のすべてのプロジェクトのxmlドキュメントファイルを生成

私はTFS 2010 SP1を使用していて、自分のビルド定義の "MSBuild引数"フィールドにこの "/ p:TreatWarningsAsErrors = true/p:GenerateDocumentation = true"を試しました。それは何も生成しません。

私は/p:DocumentationFile=foo.xmlも試してみましたが、ファイルは最後にコンパイルされたプロジェクトで上書きされると仮定していましたので、代わりに変数を使ってみましたが、運がないと試しました。

/p:DocumentationFile=$(Project).xml, 
/p:DocumentationFile=$(localProject).xml 
/p:DocumentationFile=$(localBuildProjectItem).xml 

プロジェクトでこのオプションがチェックされていないのに、MSBUILD内からすべてのプロジェクトのXMLドキュメントを作成する方法はありますか?

PS:そうですね、私は既にこれに類似したスレッドを見ていますが、私はプロジェクトを修正したくありません。それはMSBUILDでやることの要点です。

お時間をありがとう

+0

これまでに解決策を見つけましたか?以下のものは問題を解決しません – artfulhacker

+0

ノップ、私が知る限り、これは私達が得ることができる最高です –

+0

私は可能な解決策を考えていました、slnを通して反復され、csprojを個別に構築するでしょう、そしてDocumentationFile = .. would私はこれを見ましたが、ビルドスクリプトでこの種の構文を見たことはありません。http://social.msdn.microsoft.com/Forums/vstudio/en-US/e46e2500-0acc-4e0f-95aa-ed282a73d2b0/get -all-csproj-files-in-build-template-when-building-sln – artfulhacker

答えて

2
  1. があなたのプロセス・テンプレート(すなわち:$/yourproject/BuildProcessTemplates/DefaultTemplate.xaml)を開き

  2. 下にスクロールしてCompile the Project活動を見つけます。

  3. は、DocumentationFileという名前の新しい変数を追加します。タイプデフォルト値を設定= String、範囲= Compile the Project
  4. に:

    String.Format("{0}.XML", System.IO.Path.GetFileNameWithoutExtension(serverBuildProjectItem)) Compile the Project

  5. 変更を保存し、Run MSBuild for Project活動までスクロールダウンします。 String.Format("/p:SkipInvalidConfigurations=true {0};DocumentationFile={1}", MSBuildArguments, DocumentationFile) Run MSBuild for Project

  6. 変更チェックインとビルド:

  7. CommandLineArgumentsでは、次の値を設定します。これにより、プロジェクトによって設定されていなくてもドキュメンテーションが生成されます。

+0

私はタスクを修正せずに取得できると思うので、この回答をマークします。ビルド定義で選択されたソリューションで、各ソリューションの個々のプロジェクトではありません –

+0

これはxmlファイルを作成しますが、複数のプロジェクトでslnをビルドするときにファイルが置き換えられるのを防ぎません – artfulhacker

関連する問題