发布于 2015-04-22 09:12:10
不是很容易。通过命令行上的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中的作用(也许有,但并不简单)。
穷人的攻击是在VS ('Tools->External .>Add‘)中定义外部工具:将' command’设置为msbuild命令,将'Title‘设置为'CustomRebuild',将’参数‘设置为'$(SolutionDir)\$(SolutionFileName) /t:Clean;Build /p:Configuration=Debug;Platform=Win32 32’。然后,您可以调用'Tools->CustomRebuild‘命令(也可以通过键盘等),它可以执行您想做的事情。不过,当然只适用于Debug\Win32 32。为了解决这个问题,您可以编写一个自定义扩展,因为在那里您可以访问当前的配置和平台(afaik),然后通过编程方式构建解决方案。
这个主题的变化:将一个空的Makefile项目添加到您的解决方案中(右击-> add ->New>General->Makefile项目),并在它的属性中将‘重建所有命令行’设置为msbuild $(SolutionPath) /t:Clean;Build /p:Configuration=$(Configuration);Platform=$(Platform)。然后打开Configuration并从构建中导出该项目(以避免无限循环)。现在,如果您右键单击makefile项目并选择'Project > rebuild‘,它将有效地重建整个解决方案--但是现在使用当前选择的配置和平台。
https://stackoverflow.com/questions/29783883
复制相似问题