gpt4 book ai didi

visual-studio - Visual Studio如何确定使用多项目解决方案复制到输出目录的内容?

转载 作者:行者123 更新时间:2023-12-03 10:07:48 25 4
gpt4 key购买 nike

假设我们有一个具有以下结构的解决方案:

  • Project.DAL-数据访问层,
    取决于较低级别的库,
    例如带复制本地的Oracle.DataAccess
    =真
  • Project.BLL-业务逻辑层,将Project.DAL引用为
    项目
  • Project.UI-UI层,
    编译为可执行文件,引用
    Project.BLL,默认项目

  • 编译Project.UI时,VS足够聪明,可以将Project.DAL.dll复制到输出目录,但是要弄清楚我希望将Oracle.DataAccess也复制到输出目录以分发给客户端,也不够聪明。 。

    谁能解释为什么会这样?是否是因为它在GAC中看到了Oracle.DataAccess,并假设客户端也在GAC中也拥有了它?

    没什么大不了的,但是每次我添加一个新的程序集引用时,我都必须记住将其设置为本地复制,并添加一个项目以将其复制到我的构建脚本中,这有点烦人。

    最佳答案

    是的,Visual Studio将在以下两种情况中的任何一种情况下将DLL复制到输出路径:

  • 通过CopyLocal = true明确引用DLL。
  • DLL是在没有CopyLocal的情况下引用的,或者是通过其他一些引用的DLL 隐式引用的,并且不在GAC


  • 当文件在GAC中时,它不会在本地复制的原因是,在解析程序集名称时,GAC具有最高优先级,即,即使您具有(不同的)本地副本,也将使用GAC的版本。

    我建议您设置一个库目录,在其中放置所有引用的外部程序集。然后,您在没有插入Oracle文件的计算机(或VM)上设置了自动MSBuild脚本(为此也未安装Visual Studio)。这样,文件将被复制到内部版本,与使用VS相比,您将对执行的操作有更多的控制。

    关于visual-studio - Visual Studio如何确定使用多项目解决方案复制到输出目录的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/353617/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com