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

发布于 2024-07-07 05:37:41 字数 401 浏览 4 评论 0原文

因此,安装 NUnit 后,程序集(nunit.framework 等)现在出现在 References > 中。 添加引用 对话框,但它们不在 %WINDIR%\Microsoft.NET\Framework\v2.0.50727 目录中,并且没有 NUnit 注册表项程序集路径(即 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramewokr\AssemblyFolder)

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

So after installing NUnit, the assemblies (nunit.framework, etc.) now appear in the References > Add Reference dialog, but they're not in the %WINDIR%\Microsoft.NET\Framework\v2.0.50727 dir and there is no NUnit registry entry for the Assembly Path (i.e. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramewokr\AssemblyFolder).

There's also no automatic entries created in the project properties Reference Paths for the NUnit install directory. How the heck are they appearing in the "Add Dialog"?!?! I thought the mentioned way were the only ways assemblies could appear in "Add Reference".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

空心空情空意 2024-07-14 05:37:41

我在周末对此进行了更深入的研究。 从我的 博客

为什么 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 与 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< /a>.
  • 如果您正在开发供其他开发人员使用的程序集(即您是 Microsoft 或开发工具供应商),则可以将它们放在 C:\Program Files\Reference Assemblies 目录的子目录中,然后将其添加到 AssemblyFolders 注册表中钥匙。

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

但请注意,这在 64 位上不起作用,因为 Visual Studio 是 32 位应用程序。 您实际上需要在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\AssemblyFolders 下注册您的内容,并且您可能应该在两者下注册。

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

I dug deeper into this at the weekend. Reproduced verbatim from my blog:

Why is NUnit not in the GAC? (or Why does [assembly X] not appear in Visual Studio's Add Reference dialog?)

Because Visual Studio doesn’t look for references in the GAC:

This is by design.

You can either add your files explicitly, which doesn’t work if other people in your team have installed the files somewhere else, for example C:\Program Files\NUnit 2.4.6 vs. C:\Program Files\NUnit-2.4.6. Or (more specifically, because this is the problem I was having this morning) C:\Program Files\NUnit 2.4.6 vs. C:\Program Files (x86)\NUnit 2.4.6. Note the (x86) – my home PC is (as of last weekend) running Vista Ultimate x64.

You have a couple of options:

  • If your assemblies don’t already have homes, you can put them in the VS PublicAssemblies folder: http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245239.aspx
  • If they already have homes, you can add them to the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders registry key: http://support.microsoft.com/?kbid=306149.
  • If you’re developing assemblies for other developers to use (i.e. you’re Microsoft or a development tool vendor), you can put these in a subdirectory of C:\Program Files\Reference Assemblies directory, and then add that to the AssemblyFolders registry key.

This means that your project files will reference the assembly by name (i.e. name, version, public key token, all that jazz), and it won’t matter where it’s actually installed on your PC.

Note, however, that this doesn’t work as-is on 64-bit, because Visual Studio is a 32-bit application. You actually need to register your stuff under HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\AssemblyFolders, and you should probably register under both.

There are also corresponding HKEY_CURRENT_USER variants of those keys, but (since that roams), it’s not much use (because the paths are usually relative to the machine, anyway).

南薇 2024-07-14 05:37:41

奇怪的是,[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

Strange, [HKEY_CURRENT_USER\SOFTWARE\Microsoft.NETFramework\AssemblyFolders] should be the only thing driving this.

Perhaps this snippet from this page is relevant?

If you install the .NET Framework 3.0 Service Pack 1 (SP1), the following registry subkey is added:

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

If you install the .NET Framework 3.5, the following registry subkey is added:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\v3.5
伴我老 2024-07-14 05:37:41

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

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

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

On my install of NUnit I have a registry key

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

It seems to be the driver of this behaviour on my computer. Once I removed that key the references did not appear.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文