0

因此,在安装 NUnit 之后,程序集(nunit.framework等)现在出现在References > Add Reference对话框中,但它们不在%WINDIR%\Microsoft.NET\Framework\v2.0.50727目录中,并且没有NUnit针对 Assembly Path 的注册表项(i.e. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramewokr\AssemblyFolder)

NUnit在安装目录的项目属性参考路径中也没有创建自动条目。他们到底是怎么出现在“添加对话框”中的?!?!我认为上述方式是程序集出现在“添加引用”中的唯一方式。

4

3 回答 3

2

我在周末更深入地研究了这一点。从我的博客逐字转载:

为什么 NUnit 不在 GAC 中?(或为什么 [assembly 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 与 C:\Program Files (x86)\NUnit 2.4.6。注意(x86)——我的家用电脑(截至上周末)运行 Vista Ultimate x64。

你有几个选择:

  • 如果您的程序集还没有 home,您可以将它们放在 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 变体,但是(因为漫游),它没有多大用处(因为路径通常是相对于机器的,无论如何)。

于 2008-10-26T18:55:42.030 回答
0

奇怪的是,[HKEY_CURRENT_USER\SOFTWARE\Microsoft.NETFramework\AssemblyFolders] 应该是唯一驱动这个的东西。

也许这个页面的这个片段是相关的?

如果您安装 .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
于 2008-10-20T23:23:08.600 回答
0

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

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

它似乎是我计算机上这种行为的驱动程序。一旦我删除了该键,引用就不会出现。

于 2008-10-21T00:56:58.113 回答