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