不是一個簡單的方法。在命令行上通過VS或msbuild重建解決方案實際上包括將解決方案和項目文件轉換爲臨時msbuild文件,然後使用該文件中的重建目標調用msbuild。此次改造的目標恰好是類似這樣定義的
<ItemGroup>
<AllProjects Include="Project A"/>
<AllProjects Include="Project B"/>
</ItemGroup>
<Target Name="Rebuild">
<MSBuild Projects="@(AllProjects)" Targets="Rebuild"/>
</Target>
因此,它總是會導致清潔/每個項目的建設。你想要的是
<Target Name="Rebuild" DependsOnTargets="Clean;Build"/>
這將有效地調用清理所有項目,然後建設所有項目。
但是,我不認爲有一種方法可以與解決方案的轉換過程交互到msbuild文件,也不需要重新定義重建解決方案在VS中的作用(很可能存在但不是直截了當的)。 ('Tools-> External Tools ...-> Add'):將'Command'設置爲你的msbuild命令,將'Title'設置爲'CustomRebuild' ,將'Arguments'設置爲'$(SolutionDir)\ $(SolutionFileName)/ t:Clean; Build/p:Configuration = Debug; Platform = Win32'。然後你可以調用'Tools-> CustomRebuild'命令(也可以通過鍵盤等),它會做你想做的。但是,當然只適用於Debug | Win32。爲了擺脫這個問題,你可以寫一個自定義的擴展,因爲在那裏你可以訪問當前的配置和平臺(afaik),然後以編程方式編譯該解決方案。
該主題的變化:向您的解決方案添加一個空的Makefile項目(右鍵單擊 - >添加 - >新建項目 - >常規 - >生成文件項目)並在其屬性中設置'重建所有命令行'msbuild $(SolutionPath) /t:Clean;Build /p:Configuration=$(Configuration);Platform=$(Platform)
。然後打開配置管理器並從構建中排除該項目(以避免無限循環)。現在,如果右鍵單擊makefile項目並選擇「僅項目 - >僅重建」,它將有效地重建整個解決方案 - 但現在使用當前選定的配置和平臺。
當然在這個變化背後有幾個支持電話。健康的使用Build +每天清潔一次,它不會比這更多。構建咕嚕聲總是一個非常好的主意來清除這樣的問題。如果它建立在2臺機器上,那麼你感覺好了500%。 –