【发布时间】: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