【问题标题】:Is there a reason why Visual Studio puts every project output in a separate folder?Visual Studio 是否有理由将每个项目输出放在单独的文件夹中?
【发布时间】:2012-04-10 18:24:54
【问题描述】:

默认情况下,Visual Studio(2010 和 11 beta)将解决方案中的每个项目构建到单独的文件夹中。结果,特别是如果项目相互引用,它们在构建过程中会被大量复制(CopyLocal = true)

-- solution has four projects: proj1, proj2, proj3 and proj4
-- building proj1 --
solution/proj1/bin/debug/proj1.dll
-- building proj2 (depends on proj1) --
solution/proj2/bin/debug/proj1.dll
solution/proj2/bin/debug/proj2.dll
-- building proj3 (depends on proj1) --
solution/proj3/bin/debug/proj1.dll
solution/proj3/bin/debug/proj3.dll
-- building proj4 (depends on proj2 and proj3) --
solution/proj4/bin/debug/proj1.dll
solution/proj4/bin/debug/proj2.dll
solution/proj4/bin/debug/proj3.dll
solution/proj4/bin/debug/proj4.dll

由于我当前的解决方案有 90 个项目,其中大多数项目至少有一些相互引用(只有 3 个是实际的可执行文件),这很烦人,我一直想知道为什么默认情况下 Visual Studio 会这样做不仅将每个项目输出放在同一个文件夹中,而且会导致这种可怕的冗余。 我知道我可以更改输出文件夹并关闭引用项目的复制,但我想知道默认行为背后是否有原因。

默认情况下,VS2005 确实将所有内容放在一个文件夹中(不确定 2008 年),但这有什么实际的缺点吗?另外,在 VS10(可能是 VS Addon)中有没有办法将所有项目的输出文件夹设置为同一个文件夹,以及为每个项目引用设置 CopyLocal = false

【问题讨论】:

  • 这是一种避免文件名冲突的简单方法。在 bin\Debug 文件夹中没有那么多,肯定在 obj\Debug 文件夹中。
  • @HansPassant 好点,但是中间目录独立于实际输出目录。即使改变了输出目录,每个项目的 obj 文件夹仍然是分开的,这确实有意义。

标签: visual-studio visual-studio-2010 projects-and-solutions


【解决方案1】:

我能想到的一件事是将项目彼此分开,即:如果您更改(并编译)一个项目,它不会立即破坏尚未正确更新以处理更改的其他项目。

如果所有内容都在一个文件夹中,上述情况可能会导致不必要的麻烦(直到您重建整个解决方案)。

【讨论】:

  • 理论上是有道理的,但是假设你有一个dll和一个exe,并且你更改了dll并运行exe,VS会提醒你解决方案已经过时并且需要重建. - 如果您对无法通过简单重建解决的 dll 进行重大更改,理论上您可以独立处理模块,但这就是接口和多个解决方案的用途,因为在这种情况下更改/重建 exe仍然会破坏一切。
  • 我更多地考虑从 VS 外部运行程序时会发生什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多