W naszym produkcie jest około 400 projektów, więc w VS 2012, jeśli chcę utworzyć kompilację, generuje ona analizę kodu dla wszystkich 400 projektów i nie mogę ręcznie wyłącz analizę kodu dla każdego projektu. Dlatego szukam mechanizmu, który wyłącza analizę kodu dla całego rozwiązania (wszystkich projektów), a następnie stosuje te ustawienia do poszczególnych projektów.Wyłącza analizę kodu na poziomie rozwiązania w Microsoft Visual Studio 2012
Odpowiedz
Nie wiesz, czy jest to łatwe z VS2012. CodeAnalysis jest definiowana na poziomie projektu i zależy od konfiguracji kompilacji. Na przykład w wersji Release nie ma analizy kodu.
Najpierw spróbuj utworzyć konfigurację na podstawie wydania.
Innym rozwiązaniem (ale bardzo złym) może być uruchomienie partii w celu zmodyfikowania wszystkich plików projektu.
Oto plik przykładowy projekt (sprawdź element o nazwie 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>
Dzięki za odpowiedź ... !!! ... Ale znam zmiany na poziomie projektu, ale chcę wyłączyć to samo na poziomie rozwiązania lub powiedzieć dla wszystkich projektów w jednym ustawieniu lub tak ... – Nirav31
można napisać aplikację konsoli mało który czyta wszystkie pliki projektu z pliku roztwór, a następnie przełączać XML Węzeł każdego projektu.
Funkcja uzyskać pliki projektu z roztworu:
public IEnumerable<string> Parse(string solutionFile)
{
if (solutionFile == null)
throw new ArgumentNullException("solutionFile");
if (!File.Exists(solutionFile))
throw new FileNotFoundException("Solution file does not exist", solutionFile);
var projectFiles = new List<string>();
using (var reader = new StreamReader(solutionFile, true))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (line == null)
continue;
line = line.TrimStart();
if (!line.StartsWith("Project(", StringComparison.OrdinalIgnoreCase))
continue;
var projectData = line.Split(',');
var projectFile = projectData[1].Trim().Trim('"');
if (!string.IsNullOrEmpty(Path.GetExtension(projectFile)))
projectFiles.Add(projectFile);
}
}
return projectFiles;
}
a funkcja aby przełączyć węzeł (y) RunCodeAnalysis:
public void ToggleCodeAnalysis(string projectFile)
{
if (projectFile == null)
throw new ArgumentNullException("projectFile");
if (!File.Exists(projectFile))
throw new FileNotFoundException("Project file does not exist", projectFile);
var xmlDocument = new XmlDocument();
xmlDocument.Load(projectFile);
var namespaceManager = new XmlNamespaceManager(xmlDocument.NameTable);
namespaceManager.AddNamespace("ns", "http://schemas.microsoft.com/developer/msbuild/2003");
var nodes = xmlDocument.SelectNodes("//ns:RunCodeAnalysis", namespaceManager);
if (nodes == null)
return;
var hasChanged = false;
foreach (XmlNode node in nodes)
{
bool value;
if (!Boolean.TryParse(node.InnerText, out value))
continue;
node.InnerText = value ? "false" : "true";
hasChanged = true;
}
if (!hasChanged)
return;
xmlDocument.Save(projectFile);
}
Można użyć trochę trik, aby wyłączyć analizę statycznego kodu dla całej instancji Visual Studio zgodnie z opisem here. W skrócie:
- Otwórz
Developer Command Prompt for VS2012
- typ
set DevDivCodeAnalysisRunType=Disabled
- typ
devenv
zacząć Visual Studio
samo rozwiązanie działa dla Visual Studio 2015 za pośrednictwem Developer Command Prompt for VS2015
.
W tym celu można użyć okna konsoli menedżera pakietów Nuget.
Utwórz nowy plik tekstowy w katalogu "C: \ Users {Twój user} \ Documents \ WindowsPowerShell" o nazwie "NuGet_profile.ps1" i dodaj następujący kod:
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);
}
Restart Visual Studio. Kliknij menu "Widok" | "Inne okna" | "Konsola menedżera pakietów". Teraz można wykonać następujące polecenia:
> Enable-CodeAnalysis
> Disable-CodeAnalysis
Aby wyłączyć analizy kodu dla konkretnego projektu: -
- Kliknij prawym przyciskiem myszy na projekcie, wybierz Właściwości.
- Na stronie właściwości wybierz Analiza kodu.
- Odznacz pole wyboru "Włącz analizę kodu podczas kompilacji".
- 1. Używanie Java z Microsoft Visual Studio 2012
- 2. Jak wykonać analizę kodu programu Visual Studio z wiersza poleceń?
- 3. Wyłącz automatyczne zapisywanie kodu w Visual Studio 2012
- 4. Uruchom Visual Studio na Microsoft Surface?
- 5. Microsoft Visual Studio 2012 bardzo mała linia poleceń
- 6. Sfrustrowany Visual Studio 2012 na Windows Server 2012
- 7. Kod Visual Studio 2012 Coverage
- 8. Test jednostki C++ w Visual Studio 2012
- 9. Microsoft Visual C++ optymalizacja kodu
- 10. Visual Studio Express 2012 i Git
- 11. Visual Studio 2012 wisi na edycji XAML
- 12. Visual Studio 2012: Podświetlanie składni jest wyłączane i na
- 13. NLog fragment kodu nlogger nie działa Visual Studio 2012
- 14. Brakuje menu Visual Studio 2012 "analiza zasięgu kodu"
- 15. Visual Studio 2012 niepublikowanie projektu
- 16. CA1001 Ostrzeżenie Visual Studio 2012 Analiza kodu. Co to znaczy?
- 17. Powolne ładowanie rozwiązania w Visual Studio 2008
- 18. Visual Studio 2012 i Web Essentials 2012 wywala na kompilacje
- 19. Visual Studio 2012: Obsługa zastępowania kodu przez wiele linii
- 20. Jak budować profile publikowania Visual Studio 2012 na serwerze Build z MsBuild bez instalowania Visual Studio 2012
- 21. Powiększanie Visual Studio 2012 ultimate
- 22. użyciu OpenSSL w Visual Studio 2012
- 23. visual studio express 2012 app.config remapping zespołu
- 24. Visual Studio 2012 wyświetla raport o aktualizacji
- 25. "Wykryto LoaderLock" w Visual Studio 2012
- 26. Zgodność z Visual Studio 2012
- 27. Visual Studio 2012 częściowe publikowanie
- 28. Jak ukryć analizę kodu na wygenerowanym kodzie?
- 29. Najlepsze praktyki organizowania rozwiązania Visual Studio
- 30. TypeScript w Visual Studio 2012 Express
Czy wszystkie te projekty znajdują się w jednym rozwiązaniu? –
Tak, ponieważ mamy również połączone z nimi testy jednostkowe. – Nirav31
400 projektów w jednym rozwiązaniu jest zbyt wiele. –