質問

Nunit 2.9.3を使用して、複雑なソリューション(Gnu Linuxの下で開発され、Gnu Linuxの下で展開された)があります。

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

<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>

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

何が間違っていますか?

役に立ちましたか?

解決

ビルドツールは通常、GACからアセンブリを解決しません(おそらく最後の手段として)。 .netでは、レジストリに登録されている「アセンブリフォルダー」です。モノでは、「pkgconfig」を使用します。ヌニットアセンブリを削除した可能性がありますが、XBUILDを指示し、DLLをモノデベロンプするPKGCONFIG(「PC」)ファイルを削除または修正しませんでした。

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

この場合、新しいヌニットアセンブリ用のPCファイルを作成し、/usr/local/lib/pkgconfigディレクトリ(/usr/localは、ソースから構築するものをインストールするためのプレフィックスです)に配置することをお勧めします。他の場所に置いて、PKG_CONFIG_PATH環境変数に含まれる他の場所を持っています。

参照:

また、モノ環境の構成に関する一般的な背景については、以下を参照してください。

他のヒント

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

それが構成されている場合、XbuildはGACまたは他の事前に設定されたパスを読み取る代わりに、このローカルコピーを直接使用する必要があると思います。そうでない場合は、バグをモノチームに報告します。

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

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

fwiw、私はapt-getパッケージマネージャー(ubuntu)を使用してnunitをインストールしました...

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