質問

次の点について 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 変数を使用します。私はこのプロセスを頭の中で考えているので、これについては我慢してください(笑)。

  1. Visual Studio で、ビルド後のイベントを実行するプロジェクトをアンロードし、アンロードされたプロジェクト ノードを右クリックして [編集...] を選択します。
  2. 置く タスクの使用 あなたが持っているものと同じように、上部にあります。
  3. プロジェクトをリロードし、プロジェクトのプロパティを開いて、そこでビルド後のイベントを編集します。
  4. これで、これらすべての気の利いた変数にアクセスして、カスタム タスクに追加できるようになります。

プロジェクト ファイル自体は MSBuild スクリプトであり、あらゆる種類の気の利いた MSBuild スクリプト トリックを実行できます。

編集:申し訳ありませんが、最初の質問に対する答えはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top