外部タスクを使用して最終出力を保存する場所に関する情報を取得することにより、csproj で OutputPath パラメータをグローバルにオーバーライドしようとしています。
タスクを作成しました:
<Target Name="SetSolutionTarget">
<SetSolutionConfiguration SolutionPath="$(SolutionPath)">
<Output PropertyName="SolutionConfig" TaskParameter="SolutionConfiguration"/>
</SetSolutionConfiguration>
<Message Text="SolutionConfiguration is: $(SolutionConfig)" Importance="high" />
</Target>
タスクはうまく機能し、メッセージはファイルを出力したい場所に正しい値を出力します。
問題は、それを OutputPath と統合しようとしたときです。やろうとしている:
<OutputPath>$(SolutionConfig)</OutputPath>
機能しません - エラーがスローされます: 「OutputPath プロパティが設定されていません ....」 - これは、変数がタスク間で渡されないか、ビルドを実行する前に OutputPath の変数を設定する必要があることを意味します。
結果を出力する代わりに、タスクに環境変数を設定するなど、他のことも試しました(ただし、それでもうまくいきません)。