【问题标题】:Why does NUnit expect an older version of the framework?为什么 NUnit 需要旧版本的框架?
【发布时间】:2012-10-05 15:18:58
【问题描述】:

这是我第一次尝试使用 NUnit。我已经使用 NuGet 将 NUnit 安装到了我的 Visual Studio 项目中。如下图所示,它引用了 nunit.framework,版本 2.6.1.12217...

...然后我安装了最新的 Windows 应用程序 (NUnit-2.6.1.msi)....

...并尝试加载我的测试程序集...

...但由于某种原因,它需要 nunit.framework 的 2.5.10.11092 版本。

知道我做错了什么吗?

【问题讨论】:

  • 打开项目文件,检查 XML 并确保设置了正确的 NUnit 引用路径。
  • XML 中的路径看起来不错。

标签: .net visual-studio-2010 unit-testing nunit


【解决方案1】:

您的一个测试项目(或它们引用的第三方/项目)引用了该特定版本。检查所有引用 NUnit 的 csproj 文件并查找该版本。

一种简单的确保方法是在 *.csproj 中“在文件中搜索”“2.5.10.11092”(我为此使用 notepad++)。

如果任何地方都没有对旧版本的具体引用,则旧版本可能仍在 GAC 中 - 尝试具体引用新版本,这应该会“胜出”。

编辑 - 参考示例:

<Reference Include="nunit.framework">
  <HintPath>..\..\..\ExternalLibrary\NUnit\nunit.framework.dll</HintPath>
</Reference>

【讨论】:

  • 嗨塞尔达里。感谢那。我进行了搜索,发现两个完全不相关的 csproj 文件引用了该版本。我不明白这有什么关系,因为它们不相关,不在同一个解决方案中,并且编译到完全不同的位置。然后我查看了 C:\Windows\assembly 并找不到 nunit.framework。所以我添加了新版本(2.6.1.12217),并将我的项目设置为专门引用该版本......它仍然给我同样的错误。
  • 我发现的一件看起来很可疑的事情是,在我的 NuGet 包文件中,我有 ,但在NUnit GUI 的 about 页面显示“Framework Version: Net 3.5”
  • 您不应该在那里手动添加 dll... 这很重要,因为如果 CLR 先加载该版本,那么(如果您不引用特定版本)CLR 将使用加载的程序集并且不会再次加载程序集。 尝试从这些项目中删除特定版本(参见编辑)。
  • 我现在删除了所有引用旧版本的项目,并将我的项目从 ... 我仍然得到同样的错误。
【解决方案2】:

另一种可能性是您正在引用第三方程序集,该程序集在特定版本的 nunit.framework 上具有引用。

例如我遇到了同样的问题,因为我引用了TeamAgile.UnitTestExtensions.dll

要检查特定程序集是否有对 nunit.framework.dll 的引用,请使用 ILDASM 并检查 MANIFEST 中的 extern 元数据。

从屏幕截图中可以看出,此程序集引用了 2.4.6 版的 nunit.framework。

要解决此问题,请将绑定重定向条目添加到应用程序配置文件以将旧版本映射到新版本。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="Neutral" />
        <bindingRedirect oldVersion="2.5.10.11092" newVersion="2.6.1.12217" />
      </dependentAssembly>
      ...

【讨论】:

  • 感谢 Catch22。我还没有机会尝试这个,但希望我能在一周内完成。
  • 不幸的是很久以前我尝试过这个。我今天又试了一次,希望能测试你的答案。一切正常,所以我不知道问题出在哪里。你的回答很有道理,似乎是我的问题,所以我会接受。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多