0

动机:我在构建过程中集成了 fxcop,这使得 fxcopcmd.exe 在每次目标更改时运行,或者只要之前运行 fxcop 有警告。

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

所以,我希望在使用 devenv 构建时抑制 fxcop。我们的 CI 服务器使用 msbuild 构建,所以没有问题。

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

4

2 回答 2

1

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

例如,比较使用msbuild.exedevenv.exe与 .csproj 时的结果,并定义了以下 AfterBuild 目标

<Target Name="AfterBuild">
  <Message Text="BuildingInsideVisualStudio: $(BuildingInsideVisualStudio)" Importance="high"/>
</Target>

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

我的书:Microsoft Build Engine 内部:使用 MSBuild 和 Team Foundation Build

于 2009-07-14T14:36:13.667 回答
0

我唯一能想到的就是

  1. 创建不同的构建类型(例如 debug_and_rules、release_and_rules 等)。我认为 ms build 可以阅读此内容。
  2. 让您的 CI 服务器调用 fxcop exe 与构建项目分开。这是我在 fxcop 集成到 VS 之前所做的。
  3. 让 msbuild 设置 ms build 可以读取的设置或编译器标志。我不确定这是否可行。

后台编译器是在 VS 2008 中添加到 C# 中的,据我所知,它是不可配置的。VS 2010 应该是超级可配置的,所以也许这会改变

编辑:更好地格式化我的列表

于 2009-07-14T13:10:22.937 回答