繁体   English   中英

NUnit 与 .NET 4.0 而不是 .NET-1.1 / .NET-2.0。 我需要的 DLL 在哪里?

[英]NUnit with .NET 4.0 rather than .NET-1.1 / .NET-2.0. Where is the DLL I need?

我一直在阅读并尝试使用 NUnit,到目前为止,我正在阅读的书籍/文章说,在 NUnit 的 bin 文件夹中,应该有nunit.framework.dll ,我需要在我的项目中引用它。

但奇怪的是,并没有nunit.framework.dll ,而是有两个文件夹:net-1.1 和 net-2.0。

我都不使用,我在 VS 2010 中使用 .NET 4.0。

NUnit 是否已弃用?

为什么他们只有两个旧版本的 .NET 文件夹?

首先,NUnit 绝不会被弃用,它实际上已成为 .NET 的主要单元测试框架。

但是,作为一个测试框架,它不涉及编译表达式,不使用 LINQ 或动态语言结构,并且在其当前实现中依赖于甚至在 .NET 1.0 中发现的特性,例如属性

然而,随着 .NET 2.0 的发布,一个新的 CLR 被交付。 旧的 .NET 1.1 程序集必须在应用程序配置文件中“重新映射”才能被新的 CLR 拾取,并且人们会在运行 .NET 2.0 应用程序时遇到问题,使用为 Z303CB0EF9EDB9082D611BBBE558 编译的库。

当 .NET 3.0 和 .NET 3.5 出来时,他们并没有携带新的 CLR。 它们都仍然使用 .NET 2.0 CLR,并且只添加了一些库(WPF、WCF)和语言特性(例如 LINQ)。 因为这些版本不会对 CLR 进行更改,所以为它们分发单独的库版本绝对没有意义,因为二进制文件将保持完全相同,引用 .NET 2.0 中的mscorlib版本。

我不确定 .NET 4.0 是否需要进入App.config才能正确加载 .NET 2.0 编译的 NUnit 库,所以我愿意对此发表评论。

NUnit 博客中有一段引述解释了单独的 1.1 和 2.0 打包:

那么,如果可以在任何版本的 CLR 下运行原始的 built-with-net-1.1 版本的 NUnit,为什么我们需要单独的 .Net 2.0 版本? 严格来说,我们没有。 但它很方便有几个原因:

  1. 人们似乎很难让 NUnit 在正确的框架版本下运行。 拥有一个特殊版本会让他们的生活更轻松,更不用说我的了,因为我必须回答所有问题。

  2. 最终,我们将需要一个单独的版本。 人们不可避免地会在他们的测试中开始使用仅 2.0 的功能。 想象一个可空值的断言。 或通用 TestFixture class。 我们将能够通过使用 .Net 1.1 构建的 NUnit 处理其中的一些事情,但其中许多需要.Net 2.0 或者使用.Net 2.0 实现起来要简单得多。

目前,.Net 2.0 版本在功能上与 .Net 1.1 版本相同。 我们已经反映了这一点,暂时不更改版本编号。 那些只使用一个或另一个框架版本的人可以下载为使用该版本而构建的 NUnit 副本,而不会错过任何功能。 使用这两个版本的用户可以选择并排安装这两个版本 - 请注意您引用的版本 - 或者使用命令行 /framework 选项来 select 即时安装正确的版本。

(突出显示是我的)

但是,它是很久以前(2006 年 11 月)发布的,所以现在版本可能有所不同。

转到http://nuget.org/并安装 NuGet。 然后按照有关如何将 NuGet package 添加到您的项目的说明进行操作。 然后搜索 NUnit,它会自动为您的项目导入正确的 dll。

顺便说一句,使用 .NET 4.0,您可以使用任何高于 2.0 的 dll,因此您可以在您的项目中使用 NUnit .NET 2.0 程序集。 它将与您自己的程序集一起自动加载并与 CLR v4 一起运行,因此不会有性能损失。

net-2.0 版本是使用 .NET 2.0构建的,但它会在 .NET 4.0 下成功运行(它在 its.exe.config 文件中有条目来启用此功能)。 它将成功运行使用 .NET 4.0 构建的测试。

我同意,如果他们提供的二进制文件更明显是最新的,那就不会那么混乱了,但对它们没有技术需求。 使用 net-2.0 文件夹; 它应该适合你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM