1

NUnit 2.9.3を使用した、多数の単体テストプロジェクトを含む複雑なソリューション(Windowsで開発され、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>

ソースからNUnit2.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

3 に答える 3

4

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

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

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

参照:

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

于 2011-02-02T23:11:56.247 に答える
2

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

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

于 2011-02-03T01:59:35.183 に答える
2

モノコンパイラの/pkgオプションは私にとってはうまく機能しました...

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

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

sudo apt-get install nunit
于 2012-09-03T06:03:05.067 に答える