簡體   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