1

我有一个项目,其中有一些 C# 类,我在我的 ant 脚本中使用 csc 构建这些类。我还编写了一些单元测试,我想用NUnit2.6进行测试,如果我在 GAC 中安装 thi DLL(gacutil /i myDLL.dll) 一切正常。一旦我从我的 gac 中卸载了这个 DLL,当我尝试使用 NUnit 运行我的测试时,我在构建过程中的所有测试都会出现以下错误;

Test Error : fromJDynTest1
 [exec]    System.IO.FileNotFoundException : Could not load file or assembly 'myDLL, Version=5.1.0.0, Culture=neutral, PublicKeyToken=c0409b584f86b2d6' or one of its dependencies. The system cannot find the file specified.
 [exec]    at fromJDynTest1()
...
...

有谁知道如何解决这个问题。如果您需要任何其他信息,请告诉我。

谢谢

--

SJunejo

4

1 回答 1

1

当您将正在测试的代码放在 gac 中时,它无法看到有问题的程序集,它可以看到程序集。您需要确保您正在测试的代码在编译时在 bin 目录中有程序集(可能在您的项目中的程序集引用中将 copy local 设置为 false)。

我确定它不是依赖项(在消息中提到)的原因是因为将程序集放在 gac 中时情况已解决。由于程序集是强命名的,因此不太可能导致此错误。

未能测试代码引用程序集并且测试代码没有引用或有相同的问题(不在其编译目录中)。

如果您发布项目的实际测试或结构会有所帮助。

.net 按如下方式定位程序集:

  1. 通过检查适用的配置文件(包括应用程序配置文件、发布者策略文件和机器配置文件)来确定正确的程序集版本。如果配置文件位于远程机器上,则运行时必须首先找到并下载应用程序配置文件。
  2. 检查程序集名称是否已绑定到之前,如果是,则使用先前加载的程序集。如果之前失败了,现在会再次失败。
  3. 检查 gac。如果在那里找到该程序集,则运行时将使用该程序集。
  4. 程序集的探测(如果您在文本编辑器中打开 .csproj 文件,您将看到提示路径,它会尝试帮助 .net 找到程序集)。
于 2012-04-24T22:43:31.127 回答