2009-02-27 13 views
0

msbuildのコマンドラインオプションに関する質問があります。私は 現在、既存のソリューション ファイルを使用してプロジェクトをビルドするためにmsbuildを使用しています。これらのソリューションファイルには、それぞれのマシンで異なるパスがある の外部dllへの参照があります。私は現在、ビルドスクリプト を作成していて、特定のパスを msbuildの/ p:スイッチ経由でプロジェクトファイルに渡しています。Visual Studio msbuild

私の現在のビルドラインは次のとおりです。 MSBuildのtest.sln/P:ReferencePath = "C:\ ABC"/P:ReferencePath = "C:\ RCA"

私は、参照パスが現在含まれていることに気づいた何c:\ rcaのみ、 はc:\ abcではありません。これは私にとって問題を引き起こしているので、外部DLL は2つの異なるディレクトリにあります。私はビジュアルスタジオを介して複数の 参照パスを保持することは許可されていますが、コマンドラインからは許可されません。

私は私はあなたがこれを使用することができると信じて、この

答えて

4

/Pを行うことが可能な任意の既知の方法がある:ReferencePath = "C:\はABC; C:\ RCA"

は、少なくとも何があるがlinkは、%3Bを使って ";"をエンコードしています。ビルド・ファイル内にあります。

0

セミコロンであなたのpathesをseperating試してみてください(;)このよう

はC:\ ABC; C:\ RCA

0

あなたは全体のあなたのライブラリを同期させることによってほうが良いかもしれマシン。私はVisual Studioがこれを簡単にすることを発見しました。ソリューションフォルダを追加してライブラリを追加するだけです。次に、各プロジェクトで、この共通の場所からライブラリを参照してください。この方法では、各開発者は同じ場所にそれらを持っています。

これは、ビルドをスクリプトアウトしようとするときに持つ変数の1つを削除します。

3

より多くの参照パスを提供するための正しい構文が上記に記載されていますが、私の意見では参照アセンブリの異なる場所である根本的な原因を解決することをお勧めします。私はあなたが次のような理由から、あなたのソースコードリポジトリにフレームワークアセンブリから離れて、すべてのサードパーティの依存関係を置くことをお勧め:

  1. Relatitveパスがコンピュータ間で一貫している
  2. ソースコードが正しいバージョンでシンクに常にあります(例えば、今から2年後に古いバージョンのソフトウェアをビルドする必要がある場合)。
  3. 3台目のアセンブリをアップグレードすることは、1台のマシンでアップグレードしてから、変更をリポジトリにコミットするのと同じくらい簡単です。 (以前のプロジェクトでは、Javaランタイム環境全体をチェックし、設定にかなり満足していました)
0

参照パスを設定するためのコマンドラインオプションはうまく動作しますセミコロンをエスケープすると、%3Bと&#59;の両方がうまくいくようです)。しかし、引数がナントから渡されたとき(そして複数のパスが必要な場合)、「Visual Studioプロジェクトのユーザーオプションファイル」を作成する方がうまくいくように見えました。

私はちょうど(エコー)次の形式でのファイルシステムにファイルを発し:プロジェクトファイルMyProject.csprojを与えられた(私は* .userファイルに適切な名前を与える

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <ReferencePath> 
     C:\abc;c:\rca 
    </ReferencePath> 
</PropertyGroup> 

を、私のユーザーファイルはMyProject.csproj.userになります)