Visual Studio 2010“添加引用”是将dll复制到bin目录?

时间:2010-08-23 14:55:24

标签: visual-studio visual-studio-2010

我正在使用w7,64bit和vs.net 2010。

我正在添加对“添​​加引用”对话框中的组件的引用。该组件是第三方DLL。

历史上,在W7 32bit上,它会在我的web.config中添加一行(在程序集标记内)引用此dll,它不会将dll复制到bin目录。

但是,在64位w7上,dll被复制到bin目录,而web.config根本没有更新。

为什么要将dll复制到bin目录? 感谢

解决方案:(已更新) 这些帖子给了我所需的线索。

如果您的系统无法在GAC中找到dll,VS.NET会将dll复制到bin目录。 GAC中的程序集(在您的工作站上注册),可以通过查看C:\ Windows \ Assembly目录找到。

vs.net“添加引用对话框”中列出的组件可能在gac中,也可能不在gac中。因为组件列在“添加引用”对话框中并不意味着它已在本地工作站上注册。我导航到组件目录并将所需的dll拖动到C:\ Windows \ Assembly目录。我关闭并重新打开vs.net并浏览到相同的文件并点击添加引用。

**这会将程序集引用添加到我的web.config中(它也没有将dll复制到我的网站bin目录中)****

3 个答案:

答案 0 :(得分:11)

在引用上,有一个Copy Local属性(在“属性”窗口中),它确定是否应将程序集复制到输出目录。

至于为什么这可能对其他引用不重要,MSDN说:

  

如果部署/复制包含对GAC中注册的自定义组件的引用的应用程序,则无论复制本地设置如何,都不会使用该应用程序部署/复制该组件

答案 1 :(得分:6)

它获取bin目录的副本,以便可执行文件可以找到它。除非在GAC中安装了DLL,否则它将无法找到它。

答案 2 :(得分:1)

除了之前的回复:我认为Visual Studio根据DLL不在您的计算机GAC中的事实来确定Copy Local属性是否设置为true。
它阻止VS复制本机.net DLL,因此它应该默认只复制“自定义”DLL。