Visual studio Visual studio递归复制本地

Visual studio Visual studio递归复制本地,visual-studio,deployment,reference,Visual Studio,Deployment,Reference,复制-提出了这个确切的问题-唯一的解决方案似乎是构建后事件 在Visual studio 2008中,我有以下项目: A-参考文献B B-引用Lib.dll 构建B时,Lib.dll显示在B/bin/Debug中。(这没关系) 生成时,B.dll显示在A/bin/Debug中,但Lib.dll不显示在A/bin/Debug中 既然B在运行时需要这些程序集,那么将B的所有依赖项也复制到A的输出路径不是合乎逻辑的行为吗 所有引用都具有copylocal=true (现在我必须手动引用A中所有B

复制-提出了这个确切的问题-唯一的解决方案似乎是构建后事件

在Visual studio 2008中,我有以下项目:

  • A-参考文献B

  • B-引用Lib.dll

构建B时,Lib.dll显示在B/bin/Debug中。(这没关系)

生成时,B.dll显示在A/bin/Debug中,但Lib.dll不显示在A/bin/Debug中

既然B在运行时需要这些程序集,那么将B的所有依赖项也复制到A的输出路径不是合乎逻辑的行为吗

所有引用都具有copylocal=true



(现在我必须手动引用A中所有B的依赖项,对吗?我想我也可以使用自定义的构建步骤。无论如何,这种行为有什么好处/意义吗?

我已经多次执行相同的过程,不必手动重新引用程序集。一种简单的测试方法是:

  • A中的参考B
  • 从A中的B创建对象的实例
  • 编译

  • 如果生成成功完成,则所有内容都被引用正常。

    如果Lib.dll是互操作dll,则不会复制其基础dll。除此之外,我想说可能存在运算符错误,因为您肯定不需要手动引用依赖的托管程序集。

    仅当程序集实际由.dll引用时,此操作才有效。i、 e.如果您有LibInterface.dll和LibImplementation.dll,并且A中的代码只引用LibInterface.dll中的类,则无法将LibImplementation.dll导入B的输出(干净)

    这也适用于任何任意文件-即,如果您有与项目A相关的Randon.myFile,这将是所需的程序: 1.将“复制本地”或“生成事件”添加到项目A(因此在项目A的输出中出现) 2.在项目B中,在项目A ref上设置“复制本地”。 3.然后,您应该在项目B中获得项目A输出中的所有内容(包括您的文件)——但您没有


    可能还有其他选择——“复制本地-全部”或其他什么。这将有助于VS支持IOC技术和清晰的抽象。

    您使用的是哪个版本的vof visual studio?我使用的是VS 2008。我相信它在2005/2010年的表现也是如此。在connect上提交了一个项目,fwiw:构建成功完成,但在运行时,A中B中的对象的安装以异常“无法加载类型或程序集”结束,因为B中的对象使用Lib.dll中的对象,而Lib.dll既不在GAC中,也不在当前文件夹中。。。。我也有同样的问题。似乎它和版本信息有关,即使特定版本设置为false