【问题标题】:How are NUnit assemblies appearing in VS "Add Reference" dialog?NUnit 程序集如何出现在 VS“添加引用”对话框中?
【发布时间】:2008-10-20 23:13:04
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio-2005 assemblies reference nunit


    【解决方案1】:

    我在周末对此进行了深入研究。从我的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 与 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 变体,但是(因为它是漫游的),它没有多大用处(因为路径通常是相对于机器的,无论如何)。

    【讨论】:

      【解决方案2】:

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

      也许this page 的这个 sn-p 是相关的?

      如果您安装 .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
      

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 你把它设置成什么?我刚刚创建了那个密钥,但它不起作用。我想知道是不是因为我将它设置为“C:\Program Files (x86)\NUnit 2.4.6\bin”,而 VS 是一个 32 位应用程序。不确定。
        猜你喜欢
        • 2012-03-13
        • 1970-01-01
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多