NUnit程序集如何出现在VS“添加引用”对话框中?

时间:2008-10-20 23:13:05

标签: visual-studio-2005 assemblies reference nunit

因此,在安装NUnit之后,程序集(nunit.framework等)现在出现在References > Add Reference对话框中,但它们不在%WINDIR%\Microsoft.NET\Framework\v2.0.50727目录中且​​没有{{ 1}}程序集路径NUnit的注册表项。

(i.e. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramewokr\AssemblyFolder)安装目录的项目属性参考路径中也没有创建自动条目。他们如何出现在“添加对话框”中?!?!我认为上述方式是程序集在“添加引用”中出现的唯一方式。

3 个答案:

答案 0 :(得分:2)

周末我深入研究了这个问题。从我的blog逐字转载:

为什么NUnit不在GAC中? (或者为什么[程序集X]没有出现在Visual Studio的“添加引用”对话框中?)

因为Visual Studio不在GAC中查找引用:

这是设计的。

您可以显式添加文件,如果团队中的其他人已在其他位置安装了文件,则无法正常工作,例如C:\ Program Files \ NUnit 2.4.6与C:\ Program Files \ NUnit -2.4.6。或者(更具体地说,因为这是我今天早上遇到的问题)C:\ Program Files \ NUnit 2.4.6 vs. C:\ Program Files(x86)\ NUnit 2.4.6。注意(x86) - 我的家用电脑是(截至上周末)运行Vista Ultimate x64。

您有几个选择:

  • 如果您的程序集还没有主页,可以将它们放在VS PublicAssemblies文件夹中:http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245239.aspx
  • 如果他们已经有家,您可以将它们添加到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ AssemblyFolders注册表项:http://support.microsoft.com/?kbid=306149
  • 如果您正在为其他开发人员开发程序集(即您是Microsoft或开发工具供应商),可以将它们放在C:\ Program Files \ Reference Assemblies目录的子目录中,然后将其添加到AssemblyFolders注册表项。

这意味着您的项目文件将按名称引用程序集(即名称,版本,公钥令牌,所有爵士乐),并且它在PC上的实际安装位​​置无关紧要。

但请注意,这在64位上不起作用,因为Visual Studio是一个32位应用程序。你实际上需要在HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ AssemblyFolders下注册你的东西,你应该在两者下注册。

这些键还有相应的HKEY_CURRENT_USER变体,但是(因为漫游),它没有多大用处(因为路径通常是相对于机器的,无论如何)。

答案 1 :(得分:0)

奇怪,[HKEY_CURRENT_USER \ SOFTWARE \ Microsoft.NETFramework \ AssemblyFolders]应该是推动这一点的唯一因素。

也许this page的这个代码段是相关的?

如果安装.NET Framework 3.0 Service Pack 1(SP1),则会添加以下注册表子项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\v3.0

如果安装.NET Framework 3.5,则会添加以下注册表子项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\v3.5

答案 2 :(得分:0)

在我安装NUnit时,我有一个注册表项

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\NUnit 2.4.3

它似乎是我的计算机上的这种行为的驱动因素。一旦我删除了该密钥,就没有出现引用。