【发布时间】:2026-02-10 15:30:01
【问题描述】:
为了让我更清楚,我想问你们正确的条件来拥有你的
在 Visual Studio 中重建 而不是 build 项目或解决方案?
如果我改写一下:为什么 MS 需要在 Visual Studio 中创建“Re-build ALL”选项?他们这样做的主要动机是什么?
谢谢!
【问题讨论】:
标签: .net visual-studio msbuild compilation rebuild
为了让我更清楚,我想问你们正确的条件来拥有你的
在 Visual Studio 中重建 而不是 build 项目或解决方案?
如果我改写一下:为什么 MS 需要在 Visual Studio 中创建“Re-build ALL”选项?他们这样做的主要动机是什么?
谢谢!
【问题讨论】:
标签: .net visual-studio msbuild compilation rebuild
有时会出现问题,构建无法正常工作。
发生这种情况,例如当我没有正确更新依赖库时,这些依赖库没有正确复制到构建的 bin 路径中。还有其他的例子,没想到。
那是我使用重建的时候。
【讨论】:
DRY : Rebuild = Clean + Build 依次为每个项目。
构建不会删除以前的构建输出。 重建确实会删除它们并再次构建(如果您在解决方案中,一次一个项目:删除 proj1\bin\Debug,构建 proj1,删除 proj2\bin\Debug ...)。
我进行重建(或干净构建)的主要情况是我需要更新我的解决方案的第三个依赖项。让我们看看下面的文件夹树:
解决方案 |__依赖项 |__PROJ_1 |__bin |__obj |__(代码) |__PROJ_2 |__bin |__obj |__(代码)如果我在 Dependencies 中更改我的 dll 并且不进行重建,VS(和 MsBuild)仍将使用 PROJ_N\bin\Debug(或 bin\Release)中的先前 dll 版本,因为 Dependency查找顺序(见http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild.aspx):
{CandidateAssemblyFiles} 指示$(ReferencePath) - 引用路径属性,来自 .USER 文件。 {HintPathFromItem} 指示。bin 文件夹中的 dll 在第一种查找情况下,Dependencies 文件夹中的 dll 在第二种情况下...
在这种情况下,我会进行清理(调试)、清理(发布),然后进行构建以消除 bin 文件夹中的所有先前版本。我可能有点矫枉过正,重建可能就足够了,但我不确定,因为 dll 位于 Debug 和 Release 文件夹中...
【讨论】:
Rebuild = Clean + Build