これら 2 つのMSBuildファイルについて考えてみましょう。最初build-script.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!-- build-script.xml -->
<Project
ToolsVersion="4.0"
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputName>OutputName</OutputName>
</PropertyGroup>
<Import Project="build-script-to-import.xml"/>
</Project>
そしてbuild-script-to-import.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!-- build-script-to-import.xml -->
<Project
ToolsVersion="4.0"
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputPath>Path\$(OutputName)</OutputPath>
</PropertyGroup>
<Target Name="Build">
<Message Text="$(OutputPath)" />
</Target>
</Project>
これら 2 つのファイルは、共通のターゲット ファイル ( ) を参照する非常に単純化された C# プロジェクト ファイル ( ) を表します。これは、ファイルを変更するオプションではないことを意味します。問題は、が計算されることです。ファイルをインポートする前に、この計算値に設定する必要があります。どうすればこれを達成できるか知っていますか?build-script.xml
build-script-to-import.xml
build-script-to-import.xml
OutputName
build-script-to-import.xml
GetAssemblyIdentity
注 1: 計算された値は、実際にはMSBuild taskを使用してアセンブリ ファイルから取得できるアセンブリ バージョンです。私が見ている問題は、インポートが発生する前にターゲットを呼び出さない可能性があることです。MSBuild タスクOutputName
を使用してプロパティの値を設定したいと思います。GetAssemblyIdentity
注 2: ビルドは Visual Studio によってトリガーされるため、バッチ ファイルを使用してプロパティをコマンド ライン引数として MSBuild に送信することはできません。