为了让我更清楚,我想问一下,在Visual Studio中,有哪些正确的条件可以使你的项目或解决方案重新构建,而不是构建?
如果我重新表述一下:为什么微软需要在Visual Studio中创建“重新构建所有”选项?他们的主要动机是什么?
谢谢!
为了让我更清楚,我想问一下,在Visual Studio中,有哪些正确的条件可以使你的项目或解决方案重新构建,而不是构建?
如果我重新表述一下:为什么微软需要在Visual Studio中创建“重新构建所有”选项?他们的主要动机是什么?
谢谢!
DRY:对于每个项目依次进行“清理+生成”。
生成不会删除之前的生成输出。重建会删除它们并重新生成(如果您在解决方案中,则一次生成一个项目:删除proj1\bin\Debug,生成proj1,删除proj2\bin\Debug...)。
我进行重建(或清理生成)的主要情况是当我需要更新解决方案中的第三方依赖项时。让我们看以下文件夹树:
解决方案 |__依赖项 |__PROJ_1 |__bin |__obj |__(代码) |__PROJ_2 |__bin |__obj |__(代码)
如果我更改了依赖项中的dll并且没有进行重建,则VS(和MsBuild)仍将使用在PROJ_N\bin\Debug(或bin\Release)中的先前dll版本,因为依赖项查找顺序(请参见http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild.aspx):
{CandidateAssemblyFiles}
指示$(ReferencePath)
- 引用路径属性,来自.USER
文件。{HintPathFromItem}
指示。bin文件夹中的dll在第一个查找情况中,依赖项文件夹中的dll在第二个查找情况中...
在这种情况下,我会进行一次清理(调试),一次清理(发布),然后进行生成,以消除bin文件夹中所有以前的版本。我可能有点过度了,重新构建可能已经足够了,但我不确定,因为dll位于Debug和Release文件夹中...
Rebuild
=Clean
+Build
- abatishchev