1

VS 2008 のビルド後のイベントで呼び出したいバッチ ファイルがあります。これにはal.exe. 上記のプロジェクトのビルドは通常、 で失敗しexit code 1ます。

バッチ ファイルで への呼び出しを への呼び出しに置き換えるとal.exeC:\Windows\Microsoft.NET\Framework\v2.0.50727\al.exeビルド イベントは必要に応じて処理されます。これは、ビルド後のイベントで、バッチ ファイルの実行中に「al.exe」が見つからないことを意味します。

問題は、これを自分のマシンだけでなく、ビルド サーバーでも実行する必要があることです。長い目で見れば、ビルド サーバーだけでなく、ハード コードされたパス名を参照したくありません。

$(MSBuildBinPath)環境変数に出くわし$(MSBuildToolsPath)ましたが、ビルド後のイベントエディターにマクロとしてリストされておらず、次のようにバッチファイルで使用すると問題が解決しないようです:

"$(MSBuildToolsPath)\al.exe" /link: ...

ここで構文 (二重引用符) が間違っているのではないでしょうか? もちろん、私はすでにいくつかのバリエーションを試しました。そうでない場合:ハードコーディングされたパス文字列を使用して回避する方法について、他にヒントはありますか? MS ツールの更新されたバージョンをインストールすることを提案する投稿をここで見つけましたが、ビルド サーバーのセットアップは私の管理下になく、むしろ標準化されているため、これを変更するのはかなり骨の折れる作業です。このため、VS 2008 プロジェクトのセットアップ内から制御できるソリューションを好みます。

バッチファイルは、以前にビルドされた別のプロジェクトによって生成されたバイナリを実行した出力であるため、その別のプロジェクトでパスを特定する方法しか知らなかった場合、正しい (マシンに依存する) パスをバッチファイルに書き込むことができました。または、そのプロジェクトによって出力されるバイナリの実行時。

ティア、トーマス

4

2 に答える 2

1

MSBuildToolsPathスクリプトを (ビルド後に) 呼び出すときに、 をパラメーターとしてバッチ ファイルに渡し、へ%1のパスに使用することができal.exeます。

于 2012-06-06T11:44:10.350 に答える
1

ビルドを自動化するためにどのツールを使用していますか?

私の経験から、このようなものをプロジェクト ファイルに直接追加することはお勧めしません。このようなことを複数のプロジェクト ファイルで行い、ビルドの動作を変更する必要がある場合、メンテナンスは悪夢のようになります。

@Attilaが提案したことを便乗して、ビルドを処理してからバッチファイルを実行する単純なMSBuildファイルを作成して実行すると言います。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <ProjectsToBuild Include="MyCoolProject.csproj; MyCoolSolution.sln" />
  </ItemGroup>
  <Target Name="Build">
    <MSBuild Projects="@(ProjectsToBuild)" />
    <Exec Command="MyBatchFile.bat $(MSBuildToolsPath)" />
  </Target>
</Project> 

次に、ビルド サーバーにプロジェクトまたはソリューション ファイルでビルドを実行させる代わりに、上記のファイルで MSBuild を実行します。

MSBuild.exe CoolProjectBuildFile.Build

お役に立てれば!ご不明な点がございましたら、お知らせください。

于 2012-06-06T14:18:11.540 に答える