首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从csproj文件中知道是使用devenv还是msbuild来运行它?

是否可以从csproj文件中知道是使用devenv还是msbuild来运行它?
EN

Stack Overflow用户
提问于 2009-07-14 13:00:41
回答 2查看 694关注 0票数 0

动机:我在构建过程中集成了fxcop,这使得fxcopcmd.exe在每次目标发生变化时或者只要上一次运行fxcop时出现警告就会运行。

但是当一个人在工作室工作时,无论出于什么原因,devenv.exe通常都会决定在后台编译项目。例如,当我向解决方案中添加一个新项目时,我注意到fxcopcmd.exe正在运行,这意味着后台构建已经开始。也有其他的时候。

因此,我希望在使用devenv构建时禁止使用fxcop.我们的CI服务器使用msbuild构建,所以没有问题。

顺便说一句,如果有一种方法可以禁用后台构建,那就太好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-14 14:36:14

有一个属性BuildingInsideVisualStudio会告诉你这一点。

例如,对定义了以下AfterBuild目标的.csproj使用msbuild.exe和devenv.exe时的结果进行比较

代码语言:javascript
复制
<Target Name="AfterBuild">
  <Message Text="BuildingInsideVisualStudio: $(BuildingInsideVisualStudio)" Importance="high"/>
</Target>

赛义德·易卜拉欣·哈希米

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

票数 1
EN

Stack Overflow用户

发布于 2009-07-14 13:10:23

我唯一能想到的就是

  1. 创建不同的构建类型(如debug_and_rules、release_and_rules等)。
  2. 让您的CI服务器在构建项目时调用fxcop可执行文件。这是在fxcop集成到VS之前我经常做的事情。
  3. 让msbuild设置一个msbuild可以读取的设置或编译器标志。我不确定这是否会奏效。

后台编译器是在VS2008中添加到C#中的,据我所知,它是不可配置的。VS2010应该是超可配置的,所以这种情况可能会改变

编辑:将我的列表格式化得更好一些

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

https://stackoverflow.com/questions/1125223

复制
相关文章

相似问题

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