0

Project プロパティの値が変数であり、その変数がターゲットで定義されるように、msbuild で Import ディレクティブを使用する方法はありますか?

現状では、インポート ディレクティブはどのターゲットよりも先に評価されるように思えます。

例えば:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <PublishDir>none</PublishDir>
        <AutomatedTestsTarget>none</AutomatedTestsTarget>
    </PropertyGroup>

    <Target Name="GetPublishDir">
        ...
    </Target>

    <Target Name="BeforeCompile" DependsOnTargets="GetPublishDir">
        <PropertyGroup>
            <AutomatedTestsTarget>$(PublishDir)\automated_tests.build</AutomatedTestsTarget>
        </PropertyGroup>
    </Target>

    <Import Project="$(AutomatedTestsTarget)"/>

</Project>

フランケンソリューション

クイック ソリューション (コメントによる)、2 つの msbuild 呼び出し、最初にファイルを書き込みます。次に、この方法でインポートを行います (ファイルからパスを読み取ります)。

<PropertyGroup>
    <AppRootDir>$([System.IO.File]::ReadAllText($(MSBuildProjectDirectory)\directory.txt))\..\automation\</AppRootDir>
</PropertyGroup>
4

1 に答える 1

0

いいえ。インポートは「実行段階」ではなく「評価段階」で行われます。

ビルドの評価フェーズ中... インポートされたファイルは、表示される順序でビルドに組み込まれます... プロパティは、表示される順序で定義および変更されます。

http://msdn.microsoft.com/en-us/library/dd997067.aspx

構成の収集と実行を別々の msbuild プロジェクトに分割し、一方が他方を呼び出すことができる場合があります。

すなわち: MSBuild でターゲットを生成し、同じセッションでそれらをインポートします。

于 2013-05-07T01:25:51.753 に答える