12

私たちの製品には約 400 のプロジェクトがあるため、VS 2012 でビルドを作成すると、400 のプロジェクトすべてに対してコード分析が生成され、各プロジェクトのコード分析を手動で無効にすることはできません。そのため、個々のプロジェクトに設定を適用するのではなく、ソリューション全体 (すべてのプロジェクト) のコード分析を無効にするメカニズムを探しています。

4

5 に答える 5

4

これを行うには、Nuget のパッケージ マネージャー コンソール ウィンドウを使用できます。

ディレクトリ「C:\Users{your user}\Documents\WindowsPowerShell」に「NuGet_profile.ps1」という名前の新しいテキスト ファイルを作成し、次のコードを追加します。

function Disable-CodeAnalysis(){
  ForEach ($project in $dte.Solution.Projects) {
    Set-CodeAnalysis($project, $false)
  }
}

function Enable-CodeAnalysis(){
  ForEach ($project in $dte.Solution.Projects) {
    Set-CodeAnalysis($project, $true)
  }
}

function Set-CodeAnalysis($project, $value){
  $projectName = $project.Name
  $projectFilePath = $project.FullName
  if ([System.String]::IsNullOrWhiteSpace($projectFilePath)){
    if($proj.Kind -eq "{66A26720-8FB5-11D2-AA7E-00C04F688DDE}"){
      ForEach ($item in $proj.ProjectItems) {
        if($item.SubProject -ne $null){
          Set-CodeAnalysis($item.SubProject, $value)
        }
      }
    }
    continue;
  }
  $xmlDocument = new-object System.Xml.XmlDocument
  $action = "Enable"
  if($value -ne $true){
    $action = "Disable"
  }

  Write-Host "$action code analysis for $projectName at $projectFilePath"
  $xmlDocument.Load([string]$projectFilePath);

  $namespaceManager = new-object System.Xml.XmlNamespaceManager($xmlDocument.NameTable);
  $namespaceManager.AddNamespace("ns", "http://schemas.microsoft.com/developer/msbuild/2003");

  $nodes = $xmlDocument.SelectNodes("//ns:RunCodeAnalysis", $namespaceManager);
  if ($nodes -eq $null){
    continue;
  }
  foreach ($node in $nodes){
    $node.InnerText = "$value";
  }
  $xmlDocument.Save($projectFilePath);
}

Visual Studio を再起動します。メニューの「表示」をクリック | "その他のウィンドウ" | 「パッケージ マネージャー コンソール」。これで、次のコマンドを実行できます。

> Enable-CodeAnalysis
> Disable-CodeAnalysis
于 2015-04-29T11:12:00.257 に答える
4

VS2012でこれを簡単に行うことができるかどうかはわかりません。CodeAnalysis はプロジェクト レベルで定義され、ビルド構成によって異なります。たとえば、リリースにはコード分析はありません。

まず、リリースに基づいて構成を作成してみてください。

もう 1 つの解決策 (非常に悪い方法ですが) は、バッチを実行してすべてのプロジェクト ファイルを変更することです。

サンプル プロジェクト ファイルを次に示します ( RunCodeAnalysisという名前の要素を確認してください)。

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <RunCodeAnalysis>false</RunCodeAnalysis>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
于 2013-01-28T10:37:43.900 に答える