web-dev-qa-db-ja.com

MSBuildタスク構成プロパティ

VisualStudioソリューションは3つあります。 1つ目はReleaseとしてビルドするように構成され、他の2つはDebugとしてビルドするように設定されています。

ビルドする構成(デバッグ)を明示的に示す単純な MSBuild スクリプトを実行する場合でも、最初のプロジェクトはリリースとしてビルドされます。

サンプルスクリプト:

<Target Name="Build">
    <ItemGroup>
        <ProjectToBuild Include="$(SolutionsPath)\Solution1.sln"/>
        <ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln"/>
        <ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln"/>
    </ItemGroup>
    <MSBuild Projects="@(ProjectToBuild)"
             Targets="Rebuild"
             Properties="Configuration=Debug;Platform=Any CPU"/>
</Target>

上記のバリエーションを次のように試しましたが、いつも同じ結果になります。

<Target Name="Build">
    <ItemGroup>
        <ProjectToBuild Include="$(SolutionsPath)\Solution1.sln">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>

        <ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>

        <ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>
    </ItemGroup>
    <MSBuild Projects="@(ProjectToBuild)"
             Targets="Rebuild"
             Properties="Platform=Any CPU"/>
</Target>

同様の質問があることに注意してください、MSBuildタスク-デバッグではなくリリースで1つのソリューションがビルドされているためビルドが失敗します、これはTFSとTeambuild。私は、最初から作成された単純なプロジェクトファイルを使用した純粋なMSBuildについて話しています。

この問題を解決するにはどうすればよいですか?

19
crowleym

OK問題を見つけました。 MSBuildに関連するものはありませんが、代わりに構築中のソリューションです。他の誰かの心の痛みを救うために投稿する。

何らかの理由で、デバッグ構成は次のようにソリューション内で構成されました。

代替テキストhttp://www.freeimagehosting.net/uploads/cad0bdf1c0.jpg

つまり、MSBuildは言われたことだけを実行していました...

8
crowleym

プラットフォームanycpuのスペルの問題に関しては、StackOverflowとMicrosoftの他の場所ですでに報告されている問題があることが判明しました。これは一般的にMSBuildに影響し、Platformドキュメントの問題全体が私のdotnetv3.5 MSBuild/helpで省略されています。だからおそらくこれは誰かを助けるでしょう!

リンク

TFS2010の「AnyCPU」と「AnyCPU」
ソリューションとプロジェクトの間の「任意のCPU」用のMSBuildの一貫性のないプラットフォーム

Closed as Won't Fix   
Type:  Bug
ID:  503935  
Opened:  10/26/2009 1:29:12 PM
Access Restriction:  Public  
0 Workaround(s)
5 User(s) can reproduce this bug  

MSBuild Platformプロパティにはソリューションの構築またはプロジェクトの構築のどちらであるかに応じて、Any CPUに対して異なる値があります。
-for Solution --use Platform="Any CPU" ----with space
-for Project --use Platform="AnyCPU" --スペースなし

27
AnneTheAgile

これと同じエラーが発生していました。解決策は、ターゲットプラットフォームを次のように明示的に指定することでした。

msbuild.exe /p:Platform="Any CPU"

これは私がWindows7にアップグレードしてから始まったばかりなので、それはそれと関係があると思います。

8
Nathan

/ v:diagで実行してみましたか?

また、余談ですが、「AnyCPU」(スペースなし)が必要だと思います。

1
Brian