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

是否可以从csproj文件中知道是使用devenv还是msbuild来运行它?,msbuild,fxcop,Msbuild,Fxcop,动机: 我在构建过程中集成了fxcop,这使得fxcopcmd.exe可以在每次目标发生更改时运行,或者只要上次运行fxcop时出现警告就可以运行 但是,当一个人在工作室工作时,devenv.exe通常会出于任何原因决定在后台编译项目。例如,当我向解决方案添加一个新项目时,我注意到fxcopcmd.exe正在运行,这意味着后台构建已经启动。还有其他时间 因此,我希望在使用devenv构建时抑制fxcop。我们的CI服务器使用msbuild构建,因此没有问题 顺便说一句,如果有办法禁用后台构建,那

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

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

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


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

我唯一能想到的就是

  • 创建不同的生成类型(例如调试规则和发布规则等)。我想build女士可以读到这个
  • 将CI服务器调用fxcop exe与构建项目分开。这是我在fxcop集成到VS之前所做的
  • 让msbuild设置ms build可以读取的设置或编译器标志。我不确定这是否有效
  • 背景编译器是在VS2008中添加到C#的,据我所知,是不可配置的。VS2010应该是超可配置的,所以这可能会改变


    编辑:我的列表格式稍微好一点

    有一个属性BuildingSideVisualStudio将告诉您这一点

    例如,将msbuild.exe和devenv.exe与定义了以下后生成目标的.csproj一起使用时,比较结果

    <Target Name="AfterBuild">
      <Message Text="BuildingInsideVisualStudio: $(BuildingInsideVisualStudio)" Importance="high"/>
    </Target>
    
    
    
    赛义德·易卜拉欣·哈希米

    我的书: