2011-02-02 12 views
1

NUnit 2.9.3を使用して、いくつかのユニットテストプロジェクトで複雑なソリューション(Windowsで開発、GNU \ Linuxに展開)があります。MonoとLinuxの下でNUnitテストプロジェクトを構築できません

ここでプロジェクトからの参照です:

<Reference Include="nunit.framework, Version=2.9.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\..\Program Files\NUnit 2.9.3\bin\net-4.0\nunit.framework.dll</HintPath> 
</Reference> 

私はダウンロードしてsourceからNUnitの2.9.3建て:

$ xbuild solutions/MonoDevelop/NUnit.Framework.sln /p:Configuration=Release 

とGACにインストール:

$ gacutil /i solutions/MonoDevelop/bin/Release/nunit.framework.dll 

$ gacutil /l nunit.framework 
The following assemblies are installed into the GAC: 
nunit.framework, Version=2.9.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77 
Number of items = 1 

とローカル削除モノナイトインストール:

$ rm /usr/lib/mono/2.0/nunit* 
$ rm /usr/lib/mono/4.0/nunit* 

が、私は私のソリューション構築しよう:私が間違って何

$ xbuild MySolution.sln | grep error 

: error CS0006: Metadata file `/usr/lib/mono/2.0/nunit.framework.dll' could not be found 

を?

答えて

4

通常、ビルドツールはGACのアセンブリを解決しません(最後の手段としては使用できません)。 .NET上では、それらはレジストリに登録された「アセンブリフォルダ」です。 Monoでは "pkgconfig"を使用します。あなたはnunitアセンブリを削除したかもしれませんが、xbuildとMonoDevelopにdllの場所を知らせるpkgconfig( "pc")ファイルを削除したり修正したりしませんでした。

この種のものは、パッケージによってインストールされたものを変更することは悪い考えです。パッケージを適切にアンインストールするか、適切な環境変数を使用してパッケージされたものを上書きする必要があります。

この場合、新しいnunitアセンブリ用のpcファイルを作成して/ usr/local/lib/pkgconfigディレクトリに置くことをお勧めします(/ usr/localはビルド元のインストール先のプレフィックスです)ソース)を作成するか、別の場所に置いて、PKG_CONFIG_PATH環境変数に他の場所を含めてください。

も参照してください:

とMONO環境の設定に関するいくつかの一般的な背景のために、以下を参照してください

+0

私は '/ usr/lib/pkgconfig/mono-nunit.pc'を削除しましたが、それは役に立ちませんでした – abatishchev

+1

あなたはどのバージョンのモノを使用していますか? 〜/ .config/xbuild/pkgconfig-cache-2.xmlを削除してみてください。それでもエラーが出たら、 "/ v:diag"でxbuildを実行すると、xbuildがnunitの参照を解決するためにその特定のパスを選んだ理由を知ることができます。 – radical

+0

ありがとう、マイケル! 'pkgconfig-cache-2.xml'のクリーニング。 – abatishchev

2

私が試みるのは、NUnit 2.9.3を(ソリューションフォルダ)\ libのような私のソースファイルフォルダにコピーすることです。この参照をローカルに追加し、タグがこのローカルパスと一致することを確認します。

これが設定されていると、xbuildはGACやその他の事前設定されたパスを読み込む代わりに、このローカルコピーを直接使用するべきだと思います。もしそうでなければ、私はMonoチームにバグを報告します。

2

モノコンパイラの/ PKGオプションは、私のためにうまく働いた...

dmcs test.cs /r:System.Configuration.dll /r:System.dll /pkg:nunit 

FWIW、私は(Ubuntuの上)apt-getのパッケージマネージャを使用してNUnitのインストール...

sudo apt-get install nunit 
+1

Unix上の '/ pkg'は' -pkg'( '--pkg'ではなく)です。 +1 –

関連する問題