【问题标题】:visual studio copy dll references to output folderVisual Studio 将 dll 引用复制到输出文件夹
【发布时间】:2010-09-03 12:31:17
【问题描述】:

我正在尝试扩展某个应用程序。我正在使用与该应用程序捆绑在一起的 DLL 来扩展其功能。我正在使用 Visual Studio 2010 速成版。我添加了对 dll 库的引用。在参考属性中,“复制本地”选项被禁用。(灰显)为什么?我希望 Visual Studio 将 dll 复制到我的发布文件夹。如果无法做到这一点,还有其他方法可以捆绑 dll 吗?

【问题讨论】:

    标签: visual-studio dll


    【解决方案1】:

    您对 Hans 回答的评论表明这是一个 COM 程序集并且您正在使用 Visual Studio 2010。

    这意味着程序集引用很可能是在“嵌入互操作类型”设置为 true 的情况下添加的。这具有将 COM 程序集链接到您的二进制文件的效果,无需完全部署它。下面的链接有更详细的解释

    如果您确实想部署它,则需要执行以下操作

    • 点击参考标签中的参考
    • 按 F4 以显示属性网格
    • 将“嵌入互操作类型”设置为 False(这将取消本地复制)
    • 将“复制本地”设置为 true

    【讨论】:

      【解决方案2】:

      这取决于它是什么类型的 DLL。如果它是 COM 服务器,则当您为该 COM 服务器注册了 PIA 时,Copy Local 将关闭。如果它是一个常规的 .NET 程序集,那么它在 GAC 中注册时将关闭。

      通过分别使用 regasm /u 取消注册 PIA 或使用 gacutil /u 将其从 GAC 中删除来解决此问题。请注意,如果此 DLL 要求在目标计算机上执行其安装程序,您可能不想这样做。这很可能。与组件供应商或作者交谈,了解您应该做什么。

      【讨论】:

      • 它是一个 COM 程序集(我可以看到它列在 Visual Studio 的 COM 选项卡下添加引用添加引用对话框)。如何找到需要提供给 regasm 的程序集路径。在 Visual Studio 中旁边显示的路径是 project\obj\x86\Release\Interop.lbname.dll 。提供该路径确实成功执行,但我仍然有同样的问题。
      • 很难理解。 project\obj\x86\release 不是互操作程序集的有效路径。这也不应该出现在“添加参考”对话框中。而且您不会在本机 COM 服务器上使用 regasm.exe,只能在 .NET 中实现的服务器上使用。在这种情况下,您应该按原样使用它,而不是作为 COM 服务器。与您的供应商交谈。
      猜你喜欢
      • 2013-03-26
      • 2010-12-19
      • 2021-07-22
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多