假设我们有一个具有以下结构的解决方案:
取决于较低级别的库,
例如带复制本地的Oracle.DataAccess
=真
项目
编译为可执行文件,引用
Project.BLL,默认项目
编译Project.UI时,VS足够聪明,可以将Project.DAL.dll复制到输出目录,但是要弄清楚我希望将Oracle.DataAccess也复制到输出目录以分发给客户端,也不够聪明。 。
谁能解释为什么会这样?是否是因为它在GAC中看到了Oracle.DataAccess,并假设客户端也在GAC中也拥有了它?
没什么大不了的,但是每次我添加一个新的程序集引用时,我都必须记住将其设置为本地复制,并添加一个项目以将其复制到我的构建脚本中,这有点烦人。
最佳答案
是的,Visual Studio将在以下两种情况中的任何一种情况下将DLL复制到输出路径:
当文件在GAC中时,它不会在本地复制的原因是,在解析程序集名称时,GAC具有最高优先级,即,即使您具有(不同的)本地副本,也将使用GAC的版本。
我建议您设置一个库目录,在其中放置所有引用的外部程序集。然后,您在没有插入Oracle文件的计算机(或VM)上设置了自动MSBuild脚本(为此也未安装Visual Studio)。这样,文件将被复制到内部版本,与使用VS相比,您将对执行的操作有更多的控制。
关于visual-studio - Visual Studio如何确定使用多项目解决方案复制到输出目录的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/353617/