2011-11-09 8 views
1

他にも組み込みリソースをソリューション内の他のプロジェクトに追加するカスタムMSBuildタスクがあります。私はそれらのプロジェクトを構築したいと思うリソースを追加した後、私はVisual Studio内でこれを得ることができないことがわかりました。他のソリューションプロジェクトをビルドするためのMSBuildタスクはVSで失敗しますが、MSBuild.exeコマンドラインでは動作します

テストするために、私はカスタムタスクを完全に取り除き、SilverlightソリューションのWebプロジェクトで簡単なAfterBuildターゲットを再定義しました。ターゲットは、溶液中のSilverlightアプリケーションプロジェクトをビルドするためのMSBuildタスクを使用し、次のようになります。

<Target Name="AfterBuild"> 
    <PropertyGroup> 
    <LinkedProject>..\SilverlightApplication1\SilverlightApplication1.csproj</LinkedProject> 
    </PropertyGroup> 

    <MSBuild Condition="'$(LinkedProject)' != '' " 
    Projects="$(LinkedProject)" 
    Targets="Build" 
    Properties="CustomFlag=true" > 
    </MSBuild> 
</Target> 

奇妙なことは、コマンドラインからのMSBuildを使用している場合、これはまだビジュアルでは動作しません、完璧に動作していることですWebプロジェクトを構築するときのスタジオ私はこれがSilverlightの問題の一種かもしれないと思っていましたが、代わりに.NETクラスライブラリプロジェクトをビルドしましたが、結果は同じでした。コマンドラインからは動作しましたが、VSでは動作しませんでした。 VSでは、実際のエラーはありません.Cscタスクはアセンブリをコンパイルせず、出力も生成しません。

Visual Studioでこれを行うには、何が必要ですか?

答えて

0

Visual Studioの冗長性を詳細に変更し、ビルドログを確認します。あなたのファイルが変更されていない場合CoreBuildは実行されないと思うので、AfterBuildの代わりにAfterCompileを使うことができます。

+0

私はDiagnosticを冗長に使用していますが、なぜCscタスクが出力を生成しないのかはわかりません。私はカスタムプロパティを使ってビルドターゲットを呼び出しています。テストケースでは、 "CustomFlag"と呼びました。これは、MSBuildタスクが既にビルドされている場合でもプロジェクトをビルドするのに十分だと思います。 CoreCompileターゲットが呼び出され、Cscタスクでさえ、何もしません。また、ここではテストでWebアプリケーションプロジェクトのAfterBuildターゲットを使用していますが、私のアプリケーションはCoreBuildの最後に挿入される.targetsファイルを使用しています。 –

1

'UseHostCompilerIfAvailable = false'プロパティをMSBuildタスクに渡します。

インプロセスのホストコンパイラの初期プロジェクトビルド設定を再利用するため、MSBuildタスクからcscを呼び出すとVisual Studioが壊れてしまうようです。私の場合は、同じプロジェクトを2回構築していました。デフォルトビルドでは、v4.0を指定したAfterBuild MSBuildタスクを使用して、ターゲットフレームワークv3.5を使用していました。私は同じ問題で終わった - cscが実​​行されたように見えたが、出力を生成しなかった。私は起こっていたことは、UseHostCompilerIfAvailableプロパティをtrueに設定すると、cscが私の初期プロジェクト設定を再利用したホストされたコンパイラを呼び出していたためだと思います。私が作成したv3.5を上書きします!

関連する問題