Visual Studio のビルド後のイベントに関する 2 つの質問と MSBuild
-
23-08-2019 - |
質問
次の点について 2 つの質問があります。Visual Studio 2008 とビルド後のイベント。
1) ビルド後のイベントによって呼び出される msbuild.exe のフル パスを動的にリストするにはどうすればよいですか?現在、私は次のものを持っています(ちなみに、これは美しく機能します):-
C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe
"$(ProjectDir)MSBuild\MSBuildSettings.xml"
..ただし、それはx64ビット環境がある場合にのみ機能します。組み込みのマジック設定を使用する方法はありますか?例えば。 $(MsBuildPath)msbuild.exe "blah....xml"
??
2) 私のmsbuildタスクはいくつかのことを実行し、出力としてtxtファイルを生成します。msbuild xml ファイルで出力パスをそのように定義します。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<UsingTask TaskName="CustomTask" AssemblyFile="MyAssembly.dll"/>
<Target>
<CustomTask
...
OutputFile="Foo.txt"
/>
<Target>
</Project>
実際の出力フォルダーを msbuild ファイルに渡すにはどうすればよいですか?私は試した...
OutputFile="$(OutDir)Foo.txt"
しかし、それは失敗しました:(
乾杯!
更新 #1 - 2 番目の質問への回答..
2 番目の質問に答える方法を見つけました。ただし、それが最良の質問であるかどうかはわかりません。だから他のアイデアも受け入れます:)
XML ファイルの変更::外部引数が msbuild.exe 実行可能ファイルに渡されなかった場合に、内部変数名を設定するプロパティ グループを追加します。
<PropertyGroup>
<OutputFile Condition=" '$(OutputFile)'=='' ">
..\SomeFolder\Foo.txt</OutputFile>
</PropertyGroup>
<Target>
<CustomTask
...
OutputFile="$(OutputFile)"
/>
<Target>
</Project>
次に、msbuild 実行可能ファイルを次のように呼び出します。
msbuild.exe "C:\Temp Foo\Blah\MsbuildSettings" /p:OutputFile="C:\Folder 1\Folder 2\blah\"
そしてそれはうまくいきます:)
解決
質問 1 では、プロパティを使用します MSBuildBinPath
質問 2 では、プロパティを使用します 出力パス (C# または VB プロジェクト)
OutputFile="$(OutputPath)Foo.txt"
他のヒント
カスタムタスクを vbproj (csproj C# プロジェクトの場合) ファイルを作成し、ビルド後のイベントで VS 定義の MSBuild 変数を使用します。私はこのプロセスを頭の中で考えているので、これについては我慢してください(笑)。
- Visual Studio で、ビルド後のイベントを実行するプロジェクトをアンロードし、アンロードされたプロジェクト ノードを右クリックして [編集...] を選択します。
- 置く タスクの使用 あなたが持っているものと同じように、上部にあります。
- プロジェクトをリロードし、プロジェクトのプロパティを開いて、そこでビルド後のイベントを編集します。
- これで、これらすべての気の利いた変数にアクセスして、カスタム タスクに追加できるようになります。
プロジェクト ファイル自体は MSBuild スクリプトであり、あらゆる種類の気の利いた MSBuild スクリプト トリックを実行できます。
編集:申し訳ありませんが、最初の質問に対する答えはありません。