VS和导入的msbuild项目文件
我的一个msbuild项目文件中有一条导入语句:VS和导入的msbuild项目文件,msbuild,fxcop,itemgroup,Msbuild,Fxcop,Itemgroup,我的一个msbuild项目文件中有一条导入语句: <Import Project="$(ProjectDir)..\CommonProjectProperties\OurCommon.targets" Condition="Exists('$(ProjectDir)..\CommonProjectProperties\OurCommon.targets" /> 导入的msbuild项目具有以下属性组: <PropertyGroup Condition="'$(Configur
<Import Project="$(ProjectDir)..\CommonProjectProperties\OurCommon.targets" Condition="Exists('$(ProjectDir)..\CommonProjectProperties\OurCommon.targets" />
导入的msbuild项目具有以下属性组:
<PropertyGroup Condition="'$(Configuration)' == 'Debug' And '$(SolutionName)' == 'Ourwork' And Exists('$(ProjectDir)..\..\FXCopSettings\OurGlobal.ruleset')">
<CodeAnalysisRuleSet>$(ProjectDir)..\..\FXCopSettings\OurGlobal.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisIgnoreGeneratedCode>True</CodeAnalysisIgnoreGeneratedCode>
<DefineConstants>$(DefineConstants);CODE_ANALYSIS</DefineConstants>
</PropertyGroup>
以及以下项目组:
<When Condition="Exists('$(ProjectDir)\..\..\Solutions\FXCopSettings\GlobalSuppressions.cs') And Exists('$(ProjectDir)$(ProjectName).csproj')">
<ItemGroup>
<Compile Include="$(ProjectDir)\..\..\Solutions\FXCopSettings\GlobalSuppressions.cs" />
</ItemGroup>
</When>
基本上,我要做的是在我所有的项目文件中都有上面的import语句,然后通过调整导入的项目文件来操纵FXCop是否运行
问题是,在命令行中,所有这些都可以正常工作,但常量代码分析除外,我必须使用类似于msbuild/t:build proj.sln/p:DefineConstants=CODE\u ANALYSIS=true的内容设置常量代码分析。那很好
从VS2010 IDE它只是。。。地狱看起来VS正在考虑导入的msbuild项目文件中的所有内容。。。。除了
1包含的文件显示为灰色,这意味着只有在打开“显示所有文件”时,才会在IDE中显示该文件。这意味着它没有被编译。我可以将完全相同的ItemGroup复制到父msbuild项目文件中,该文件将在解决方案资源管理器中显示为非灰色,这意味着它已编译。
2抑制文件用于告诉FXCop在进行代码分析时忽略哪些对象。当我将抑制文件作为项目的一部分正确编译时,FXCop似乎忽略了它。读到这里,显然需要打开CODE_分析常量。我想我是从导入的项目文件中做的,但它没有得到尊重。即使VS IDE中的“项目属性”窗口显示它是一个已定义的常量。同样,当我将DefinedConstansts声明移动到父项目文件中时,IDE尊重该常量
所以。。。我不确定是否需要将这篇文章分为两篇,但以下是我的问题:
1如何让IDE尊重和编译导入项目文件中列出的文件?
2如何让IDE尊重导入的项目文件中的定义状态