首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Visual中重新定义“重新生成解决方案”?

如何在Visual中重新定义“重新生成解决方案”?
EN

Stack Overflow用户
提问于 2015-04-21 21:56:33
回答 1查看 910关注 0票数 2

我正在将几个项目从Visual 2005转换为Visual 2012。在这样做时,我注意到“重新构建解决方案”选项对于多项目解决方案来说已经发生了微妙的变化(我发现由于在SO上的两个very helpful问题,这种微妙的行为变化)。VS 2005似乎在一次重建中做到了这一点:

  1. 清洁项目A+B
  2. 建设项目A
  3. 建设项目B

VS 2012似乎做到了这一点:

  1. 清洁项目A
  2. 建设项目A
  3. 清洁项目B
  4. 建设项目B

如果这两个项目是相互依赖的,特别是当输出二进制文件放在同一个文件夹中时,这是有问题的。是否有一种方法可以重新定义给定项目的“重建解决方案”,使其反映2005年的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-22 09:12:10

不是很容易。通过命令行上的VS或msbuild重新构建解决方案实际上包括将解决方案和项目文件转换为临时的msbuild文件,然后使用该文件中的重新构建目标调用msbuild。此重建目标恰好被定义为类似于

代码语言:javascript
复制
<ItemGroup>
  <AllProjects Include="Project A"/>
  <AllProjects Include="Project B"/>
</ItemGroup>

<Target Name="Rebuild">
  <MSBuild Projects="@(AllProjects)" Targets="Rebuild"/>
</Target>

因此,它总是会导致每个项目的清洁/构建。你想要的是

代码语言:javascript
复制
<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‘,它将有效地重建整个解决方案--但是现在使用当前选择的配置和平台。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29783883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档