MonoとLinuxの下でヌニットテストプロジェクトを構築できません
-
28-10-2019 - |
質問
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