From d5979d704a51351cf81bae75c7cd7999217e53f7 Mon Sep 17 00:00:00 2001 From: markcowl Date: Thu, 25 Feb 2016 19:18:03 -0800 Subject: [PATCH 1/6] Adding exceptions to static analysis --- tools/StaticAnalysis/AnalysisLogger.cs | 2 +- .../DependencyAnalyzer/AssemblyRecord.cs | 6 +++ .../AssemblyVersionConflict.cs | 49 +++++++++++++++++-- .../DependencyAnalyzer/DependencyAnalyzer.cs | 27 +++++++++- .../DependencyAnalyzer/ExtraAssembly.cs | 45 +++++++++++++++-- .../DependencyAnalyzer/MissingAssembly.cs | 47 ++++++++++++++++-- .../SharedAssemblyConflict.cs | 41 ++++++++++++++-- ...DomainHelpers.cs => EnvironmentHelpers.cs} | 26 +++++++++- .../HelpAnalyzer/CmdletHelpParser.cs | 6 +++ .../HelpAnalyzer/HelpAnalyzer.cs | 4 +- .../StaticAnalysis/HelpAnalyzer/HelpIssue.cs | 43 ++++++++++++++-- tools/StaticAnalysis/IReportRecord.cs | 5 ++ tools/StaticAnalysis/ReportLogger.cs | 34 +++++++++++-- tools/StaticAnalysis/StaticAnalysis.csproj | 2 +- 14 files changed, 312 insertions(+), 25 deletions(-) rename tools/StaticAnalysis/{AppDomainHelpers.cs => EnvironmentHelpers.cs} (73%) diff --git a/tools/StaticAnalysis/AnalysisLogger.cs b/tools/StaticAnalysis/AnalysisLogger.cs index f6aa7b493f3e..8f495ee7008a 100644 --- a/tools/StaticAnalysis/AnalysisLogger.cs +++ b/tools/StaticAnalysis/AnalysisLogger.cs @@ -86,7 +86,7 @@ public virtual void WriteWarning(string format, params object[] args) /// The filename (without file path) where the report will be written /// The given logger. Analyzer may write records to this logger and they will be written to /// the report file. - public virtual ReportLogger CreateLogger(string fileName) where T : IReportRecord, new() + public virtual ReportLogger CreateLogger(string fileName) where T : class, IReportRecord, new() { if (string.IsNullOrWhiteSpace(fileName)) { diff --git a/tools/StaticAnalysis/DependencyAnalyzer/AssemblyRecord.cs b/tools/StaticAnalysis/DependencyAnalyzer/AssemblyRecord.cs index a6a0c41e9e53..90e04d3adcd6 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/AssemblyRecord.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/AssemblyRecord.cs @@ -114,6 +114,12 @@ public override string ToString() } + public override int GetHashCode() + { + return string.Format("{0}-{1}-{2}", AssemblyName, AssemblyFileMajorVersion, AssemblyFileMinorVersion).GetHashCode(); + } + + /// /// Get all the ancestors in the ancestor tree /// diff --git a/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs b/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs index 7c54d20f5571..a3d18897755a 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs @@ -13,6 +13,8 @@ // ---------------------------------------------------------------------------------- using System; +using System.IO; +using System.Text.RegularExpressions; namespace StaticAnalysis.DependencyAnalyzer { @@ -46,6 +48,11 @@ public class AssemblyVersionConflict : IReportRecord /// public string ParentAssembly { get; set; } + /// + /// Machine readable identity of the problem + /// + public int ProblemId { get; set; } + /// /// A textual description of the problem /// @@ -62,16 +69,52 @@ public string PrintHeaders() { return "\"Directory\",\"AssemblyName\",\"Expected Version\",\"Actual Version\",\"Parent Assembly\",\"Severity\"," + - "\"Description\",\"Remediation\""; + "\"ProblemId\",\"Description\",\"Remediation\""; } public string FormatRecord() { return string.Format( - "\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\"", + "\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\"", Directory, AssemblyName, ExpectedVersion, ActualVersion, ParentAssembly, Severity, - Description, Remediation); + ProblemId, Description, Remediation); + } + public bool Match(IReportRecord other) + { + var result = false; + var record = other as AssemblyVersionConflict; + if (record != null) + { + result = string.Equals(EnvironmentHelpers.GetDirectoryName(record.Directory), + EnvironmentHelpers.GetDirectoryName(Directory), StringComparison.OrdinalIgnoreCase) + && string.Equals(record.AssemblyName, AssemblyName, StringComparison.OrdinalIgnoreCase) + && string.Equals(record.ParentAssembly, ParentAssembly, StringComparison.OrdinalIgnoreCase) + &&record.ProblemId == ProblemId; + } + + return result; + } + + public IReportRecord Parse(string line) + { + var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; + var match = Regex.Match(line, matcher); + if (!match.Success || match.Groups.Count < 9) + { + throw new InvalidOperationException(string.Format("Could not parse '{0}' as AssemblyVersionConflict record", line)); + } + + Directory = match.Groups[0].Value; + AssemblyName = match.Groups[1].Value; + ExpectedVersion = Version.Parse(match.Groups[2].Value); + ActualVersion = Version.Parse(match.Groups[3].Value); + ParentAssembly = match.Groups[4].Value; + Severity = int.Parse(match.Groups[5].Value); + ProblemId = int.Parse(match.Groups[6].Value); + Description = match.Groups[7].Value; + Remediation = match.Groups[8].Value; + return this; } public override string ToString() diff --git a/tools/StaticAnalysis/DependencyAnalyzer/DependencyAnalyzer.cs b/tools/StaticAnalysis/DependencyAnalyzer/DependencyAnalyzer.cs index 62f8ee2786ff..b79bec67f05b 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/DependencyAnalyzer.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/DependencyAnalyzer.cs @@ -13,6 +13,7 @@ // ---------------------------------------------------------------------------------- using System; +using System.CodeDom; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -26,6 +27,21 @@ namespace StaticAnalysis.DependencyAnalyzer /// public class DependencyAnalyzer : IStaticAnalyzer { + const int NoAssemblyVersionEvidence = 1000; + const int ReferenceDoesNotMatchAssemblyVersion = 1010; + const int ExtraAssemblyRecord = 2000; + const int MissingAssemblyRecord = 3000; + const int AssemblyVersionFileVersionMismatch = 7000; + const int CommonAuthenticationMismatch = 7010; + + static List FrameworkAssemblies = new List + { + "Microsoft.CSharp", + "Microsoft.Management.Infrastructure", + "Microsoft.Build", + "Microsoft.Build.Framework" + }; + private Dictionary _assemblies = new Dictionary(StringComparer.OrdinalIgnoreCase); private Dictionary _sharedAssemblyReferences = @@ -130,6 +146,7 @@ private bool AddSharedAssembly(AssemblyRecord assembly) }, AssemblyVersion = assembly.Version, Severity = 0, + ProblemId = AssemblyVersionFileVersionMismatch, Description = "Shared assembly conflict, shared assemblies with the same assembly " + "version have differing file versions", Remediation = string.Format("Update the assembly reference for {0} in one of the " + @@ -170,6 +187,7 @@ private bool AddSharedAssemblyExactVersion(AssemblyRecord record) AssemblyName = record.Name, AssemblyVersion = record.Version, Severity = 0, + ProblemId = CommonAuthenticationMismatch, AssemblyPathsAndFileVersions = new List>() { new Tuple(record.Location, new Version(record.AssemblyFileMajorVersion, @@ -202,14 +220,15 @@ private static bool RequiresExactVersionMatch(AssemblyRecord name) private static bool IsFrameworkAssembly(AssemblyName name) { - return name.Name.StartsWith("System") || name.Name.Equals("mscorlib"); + return name.Name.StartsWith("System") || name.Name.Equals("mscorlib") + || FrameworkAssemblies.Contains(name.Name); } private void ProcessDirectory(string directoryPath) { var savedDirectory = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(directoryPath); - _loader = AppDomainHelpers.CreateProxy(directoryPath, out _testDomain); + _loader = EnvironmentHelpers.CreateProxy(directoryPath, out _testDomain); foreach (var file in Directory.GetFiles(directoryPath).Where(file => file.EndsWith(".dll"))) { AssemblyRecord assembly = CreateAssemblyRecord(file); @@ -258,6 +277,7 @@ var assembly in { AssemblyName = assembly.Name, Severity = 2, + ProblemId = ExtraAssemblyRecord, Description = string.Format("Assembly {0} is not referenced from any cmdlets assembly", assembly.Name), Remediation = string.Format("Remove assembly {0} from the project and regenerate the Wix " + @@ -286,6 +306,7 @@ private void CheckAssemblyReference(AssemblyName reference, AssemblyRecord paren ActualVersion = stored.Version, ExpectedVersion = reference.Version, ParentAssembly = parent.Name, + ProblemId = NoAssemblyVersionEvidence, Severity = 2, Description = string.Format("Assembly {0} referenced from {1}.dll does not specify any " + "assembly version evidence. The assembly will use version " + @@ -304,6 +325,7 @@ private void CheckAssemblyReference(AssemblyName reference, AssemblyRecord paren ActualVersion = stored.Version, ExpectedVersion = reference.Version, ParentAssembly = parent.Name, + ProblemId = ReferenceDoesNotMatchAssemblyVersion, Severity = 1, Description = string.Format("Assembly {0} version {1} referenced from {2}.dll does " + "not match assembly version on disk: {3}", @@ -321,6 +343,7 @@ private void CheckAssemblyReference(AssemblyName reference, AssemblyRecord paren AssemblyVersion = reference.Version.ToString(), ReferencingAssembly = parent.Name, Severity = 0, + ProblemId = MissingAssemblyRecord, Description = string.Format("Missing assembly {0} referenced from {1}", reference.Name, parent.Name), Remediation = "Ensure that the assembly is included in the Wix file or directory" diff --git a/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs b/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs index 677bb9271054..9b232e04f673 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs @@ -12,6 +12,9 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using System; +using System.Text.RegularExpressions; + namespace StaticAnalysis.DependencyAnalyzer { /// @@ -25,6 +28,8 @@ public class ExtraAssembly : IReportRecord public int Severity { get; set; } + public int ProblemId { get; set; } + public string Description { get; set; } public string Remediation { get; set; } @@ -32,18 +37,52 @@ public class ExtraAssembly : IReportRecord public string PrintHeaders() { - return "\"Directory\",\"AssemblyName\",\"Severity\",\"Description\",\"Remediation\""; + return "\"Directory\",\"AssemblyName\",\"Severity\",\"ProblemId\",\"Description\",\"Remediation\""; } public string FormatRecord() { - return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\"", - Directory, AssemblyName, Severity, Description, Remediation); + return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\"", + Directory, AssemblyName, Severity, ProblemId, Description, Remediation); } public override string ToString() { return FormatRecord(); } + + + public bool Match(IReportRecord other) + { + var result = false; + var record = other as ExtraAssembly; + if (record != null) + { + result = string.Equals(EnvironmentHelpers.GetDirectoryName(record.Directory), + EnvironmentHelpers.GetDirectoryName(Directory), StringComparison.OrdinalIgnoreCase) + && string.Equals(record.AssemblyName, AssemblyName, StringComparison.OrdinalIgnoreCase) + && record.ProblemId == ProblemId; + } + + return result; + } + + public IReportRecord Parse(string line) + { + var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; + var match = Regex.Match(line, matcher); + if (!match.Success || match.Groups.Count < 6) + { + throw new InvalidOperationException(string.Format("Could not parse '{0}' as ExtraAssembly record", line)); + } + + Directory = match.Groups[0].Value; + AssemblyName = match.Groups[1].Value; + Severity = int.Parse(match.Groups[2].Value); + ProblemId = int.Parse(match.Groups[3].Value); + Description = match.Groups[4].Value; + Remediation = match.Groups[5].Value; + return this; + } } } diff --git a/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs b/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs index ea73fd482404..a19b7599c98c 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs @@ -12,6 +12,9 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using System; +using System.Text.RegularExpressions; + namespace StaticAnalysis.DependencyAnalyzer { /// @@ -23,6 +26,7 @@ public class MissingAssembly : IReportRecord public string AssemblyName { get; set; } public string AssemblyVersion { get; set; } public string ReferencingAssembly { get; set; } + public int ProblemId { get; set; } public string Description { get; set; } public string Remediation { get; set; } public int Severity { get; set; } @@ -30,14 +34,51 @@ public class MissingAssembly : IReportRecord public string PrintHeaders() { return "\"Directory\",\"Assembly Name\",\"Assembly Version\",\"Referencing Assembly\"," + - "\"Severity\",\"Description\",\"Remediation\""; + "\"Severity\",\"ProblemId\",\"Description\",\"Remediation\""; } public string FormatRecord() { - return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\"", + return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\"", Directory, AssemblyName, AssemblyVersion, ReferencingAssembly, - Severity, Description, Remediation); + Severity, ProblemId, Description, Remediation); + } + + public bool Match(IReportRecord other) + { + var result = false; + var record = other as MissingAssembly; + if (record != null) + { + result = string.Equals(EnvironmentHelpers.GetDirectoryName(record.Directory), + EnvironmentHelpers.GetDirectoryName(Directory), StringComparison.OrdinalIgnoreCase) + && string.Equals(record.AssemblyName, AssemblyName, StringComparison.OrdinalIgnoreCase) + && string.Equals(record.AssemblyVersion, AssemblyVersion, StringComparison.OrdinalIgnoreCase) + && string.Equals(record.ReferencingAssembly, ReferencingAssembly, StringComparison.OrdinalIgnoreCase) + && record.ProblemId == ProblemId; + } + + return result; + } + + public IReportRecord Parse(string line) + { + var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; + var match = Regex.Match(line, matcher); + if (!match.Success || match.Groups.Count < 8) + { + throw new InvalidOperationException(string.Format("Could not parse '{0}' as MissingAssembly record", line)); + } + + Directory = match.Groups[0].Value; + AssemblyName = match.Groups[1].Value; + AssemblyVersion = match.Groups[2].Value; + ReferencingAssembly = match.Groups[3].Value; + Severity = int.Parse(match.Groups[4].Value); + ProblemId = int.Parse(match.Groups[5].Value); + Description = match.Groups[6].Value; + Remediation = match.Groups[7].Value; + return this; } public override string ToString() diff --git a/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs b/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs index f2b8b0b9b4e6..a0e2920a9a35 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs @@ -14,7 +14,9 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Text.RegularExpressions; namespace StaticAnalysis.DependencyAnalyzer { @@ -27,13 +29,14 @@ public class SharedAssemblyConflict : IReportRecord public string AssemblyName { get; set; } public Version AssemblyVersion { get; set; } public List> AssemblyPathsAndFileVersions { get; set; } + public int ProblemId { get; set; } public string Description { get; set; } public string Remediation { get; set; } public int Severity { get; set; } public string PrintHeaders() { - return "\"Target\",\"AssemblyName\",\"AssemblyVersion\",\"Severity\",\"Description\",\"Remediation\""; + return "\"Target\",\"AssemblyName\",\"AssemblyVersion\",\"Severity\",\"ProblemId\",\"Description\",\"Remediation\""; } public string FormatRecord() @@ -41,8 +44,40 @@ public string FormatRecord() var targets = AssemblyPathsAndFileVersions.Select(s => string.Format("File version {0} in {1}", s.Item2, s.Item1)); var targetString = string.Join(", ", targets); - return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\"", targetString, AssemblyName, - AssemblyVersion, Severity, Description, Remediation); + return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\"", targetString, AssemblyName, + AssemblyVersion, Severity, ProblemId, Description, Remediation); + } + + public bool Match(IReportRecord other) + { + var result = false; + var record = other as SharedAssemblyConflict; + if (record != null) + { + result = string.Equals(record.AssemblyName, AssemblyName, StringComparison.OrdinalIgnoreCase) && + record.AssemblyVersion == AssemblyVersion && + record.ProblemId == ProblemId; + } + + return result; + } + + public IReportRecord Parse(string line) + { + var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; + var match = Regex.Match(line, matcher); + if (!match.Success || match.Groups.Count < 7) + { + throw new InvalidOperationException(string.Format("Could not parse '{0}' as SharedAssemblyConflict record", line)); + } + + AssemblyName = match.Groups[1].Value; + AssemblyVersion = Version.Parse(match.Groups[2].Value); + Severity = int.Parse(match.Groups[3].Value); + ProblemId = int.Parse(match.Groups[4].Value); + Description = match.Groups[5].Value; + Remediation = match.Groups[6].Value; + return this; } public override string ToString() diff --git a/tools/StaticAnalysis/AppDomainHelpers.cs b/tools/StaticAnalysis/EnvironmentHelpers.cs similarity index 73% rename from tools/StaticAnalysis/AppDomainHelpers.cs rename to tools/StaticAnalysis/EnvironmentHelpers.cs index cdf32c4cc754..576301c67b38 100644 --- a/tools/StaticAnalysis/AppDomainHelpers.cs +++ b/tools/StaticAnalysis/EnvironmentHelpers.cs @@ -16,7 +16,7 @@ namespace StaticAnalysis { - public static class AppDomainHelpers + public static class EnvironmentHelpers { /// /// Create a new AppDomain and create a remote instance of AssemblyLoader we can use there @@ -26,7 +26,7 @@ public static class AppDomainHelpers /// A proxy to the AssemblyLoader running in the newly created app domain public static T CreateProxy(string directoryPath, out AppDomain testDomain) where T:MarshalByRefObject { - if (string.IsNullOrWhiteSpace(directoryPath)) + if (String.IsNullOrWhiteSpace(directoryPath)) { throw new ArgumentException("directoryPath"); } @@ -43,5 +43,27 @@ public static T CreateProxy(string directoryPath, out AppDomain testDomain) w return testDomain.CreateInstanceFromAndUnwrap(typeof(T).Assembly.Location, typeof(T).FullName) as T; } + + /// + /// Get the name of the directory from a directory path + /// + /// A directory path + /// The name of the directory + public static string GetDirectoryName(string path) + { + if (path == null) + { + throw new ArgumentNullException("path"); + } + + string result = path.TrimEnd('\\'); + var lastSlash = result.LastIndexOf("\\"); + if (lastSlash > 0) + { + result = result.Substring(lastSlash + 1); + } + + return result; + } } } diff --git a/tools/StaticAnalysis/HelpAnalyzer/CmdletHelpParser.cs b/tools/StaticAnalysis/HelpAnalyzer/CmdletHelpParser.cs index c1d7d1e0476f..0922523add34 100644 --- a/tools/StaticAnalysis/HelpAnalyzer/CmdletHelpParser.cs +++ b/tools/StaticAnalysis/HelpAnalyzer/CmdletHelpParser.cs @@ -27,6 +27,9 @@ public class CmdletHelpParser public const string MamlSchemaUri = "http://schemas.microsoft.com/maml/2004/10"; public const string MamlDevSchemaUri = "http://schemas.microsoft.com/maml/dev/2004/10"; public const string CommandSchemaUri = "http://schemas.microsoft.com/maml/dev/command/2004/10"; + const int MissingCommandName = 5000; + const int MissingCommandDetails = 5010; + const int InvalidHelpFile = 5020; public static IList GetHelpTopics(string helpPath, ReportLogger logger) { IList cmdlets = new List(); @@ -49,6 +52,7 @@ public static IList GetHelpTopics(string helpPath, ReportLogger GetHelpTopics(string helpPath, ReportLogger GetHelpTopics(string helpPath, ReportLogger public class HelpAnalyzer : IStaticAnalyzer { + const int MissingHelp = 6050; public HelpAnalyzer() { Name = "Help Analyzer"; @@ -66,7 +67,7 @@ public void Analyze(IEnumerable scopes) h.HelpFile = helpFileName; h.Assembly = cmdletFileName; }, "Cmdlet"); - var proxy = AppDomainHelpers.CreateProxy(directory, out _appDomain); + var proxy = EnvironmentHelpers.CreateProxy(directory, out _appDomain); var cmdlets = proxy.GetCmdlets(cmdletFile); var helpRecords = CmdletHelpParser.GetHelpTopics(helpFile, helpLogger); ValidateHelpRecords(cmdlets, helpRecords, helpLogger); @@ -92,6 +93,7 @@ private void ValidateHelpRecords(IList cmdlets, IList public string Target { get; set; } + + public int ProblemId { get; set; } public string Description { get; set; } public string Remediation { get; set; } public int Severity { get; set; } public string PrintHeaders() { - return "\"Assembly\",\"HelpFile\",\"Target\",\"Severity\",\"Description\",\"Remediation\""; + return "\"Assembly\",\"HelpFile\",\"Target\",\"Severity\",\"ProblemId\",\"Description\",\"Remediation\""; } public string FormatRecord() { - return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\"", - Assembly, HelpFile, Target, Severity, Description, Remediation); + return string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\"", + Assembly, HelpFile, Target, Severity, ProblemId, Description, Remediation); + } + + public bool Match(IReportRecord other) + { + var result = false; + var record = other as HelpIssue; + if (record != null) + { + result = string.Equals(record.Assembly, Assembly, StringComparison.OrdinalIgnoreCase) && + string.Equals(record.HelpFile, HelpFile, StringComparison.OrdinalIgnoreCase) && + string.Equals(record.Target, Target, StringComparison.OrdinalIgnoreCase) && + record.ProblemId == ProblemId; + } + + return result; + } + + public IReportRecord Parse(string line) + { + var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; + var match = Regex.Match(line, matcher); + if (!match.Success || match.Groups.Count < 7) + { + throw new InvalidOperationException(string.Format("Could not parse '{0}' as HelpIssue record", line)); + } + + Assembly = match.Groups[0].Value; + HelpFile = match.Groups[1].Value; + Target = match.Groups[2].Value; + Severity = int.Parse(match.Groups[3].Value); + ProblemId = int.Parse(match.Groups[4].Value); + Description = match.Groups[5].Value; + Remediation = match.Groups[6].Value; + return this; } } } diff --git a/tools/StaticAnalysis/IReportRecord.cs b/tools/StaticAnalysis/IReportRecord.cs index ab0c97f50171..3ad7328b0f11 100644 --- a/tools/StaticAnalysis/IReportRecord.cs +++ b/tools/StaticAnalysis/IReportRecord.cs @@ -12,6 +12,8 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using System.Security.Cryptography.X509Certificates; + namespace StaticAnalysis { /// @@ -19,10 +21,13 @@ namespace StaticAnalysis /// public interface IReportRecord { + int ProblemId { get; set; } string Description { get; set; } string Remediation { get; set; } int Severity { get; set; } string PrintHeaders(); string FormatRecord(); + bool Match(IReportRecord other); + IReportRecord Parse(string line); } } diff --git a/tools/StaticAnalysis/ReportLogger.cs b/tools/StaticAnalysis/ReportLogger.cs index c836be697c1c..51c19556b1ec 100644 --- a/tools/StaticAnalysis/ReportLogger.cs +++ b/tools/StaticAnalysis/ReportLogger.cs @@ -13,7 +13,9 @@ // ---------------------------------------------------------------------------------- using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Runtime.InteropServices; namespace StaticAnalysis { @@ -24,10 +26,17 @@ public abstract class ReportLogger { private AnalysisLogger _parent; private string _outputFile; - public ReportLogger(string fileName, AnalysisLogger parent) + private string _exceptionsFile; + + public ReportLogger(string fileName, AnalysisLogger parent) : this(fileName, null, parent) + { + } + + public ReportLogger(string fileName, string exceptionsFileName, AnalysisLogger parent) { _parent = parent; _outputFile = fileName; + _exceptionsFile = exceptionsFileName; } protected AnalysisLogger ParentLogger { get { return _parent; } } @@ -54,15 +63,31 @@ public virtual void WriteWarning(string message) /// A typed report logger /// /// The type of the report this logger will log. - public class ReportLogger : ReportLogger where T : IReportRecord, new() + public class ReportLogger : ReportLogger where T : class, IReportRecord, new() { public ReportLogger(string fileName, AnalysisLogger logger) + : this(fileName, null, logger) + { + Decorator = Decorator.Create(); + } + + public ReportLogger(string fileName, string exceptionsFileName, AnalysisLogger logger) : base(fileName, logger) { Decorator = Decorator.Create(); + if (exceptionsFileName != null && File.Exists(exceptionsFileName)) + { + var records = File.ReadAllLines(exceptionsFileName); + for (int i = 1; i < records.Length; ++i) + { + var record = new T(); + _exceptionRecords.Add(record.Parse(records[i]) as T); + } + } } private IList _records = new List(); + private IList _exceptionRecords = new List(); public Decorator Decorator { get; protected set; } /// @@ -72,7 +97,10 @@ public ReportLogger(string fileName, AnalysisLogger logger) public void LogRecord(T record) { Decorator.Apply(record); - _records.Add(record); + if (!_exceptionRecords.Any(r => r.Match(record))) + { + _records.Add(record); + } } public override IList Records diff --git a/tools/StaticAnalysis/StaticAnalysis.csproj b/tools/StaticAnalysis/StaticAnalysis.csproj index 21a772b5b05c..c67499506d9b 100644 --- a/tools/StaticAnalysis/StaticAnalysis.csproj +++ b/tools/StaticAnalysis/StaticAnalysis.csproj @@ -46,7 +46,7 @@ - + From eea9bb976cf1b6792fab3b10c490deabfe73a829 Mon Sep 17 00:00:00 2001 From: markcowl Date: Fri, 26 Feb 2016 12:21:17 -0800 Subject: [PATCH 2/6] Adding throw if non-excpted issues occur --- tools/StaticAnalysis/AnalysisLogger.cs | 57 +++- tools/StaticAnalysis/ConsoleLogger.cs | 6 +- .../AssemblyVersionConflict.cs | 20 +- .../DependencyAnalyzer/ExtraAssembly.cs | 14 +- .../DependencyAnalyzer/MissingAssembly.cs | 18 +- .../SharedAssemblyConflict.cs | 14 +- .../Exceptions/AssemblyVersionConflict.csv | 5 + .../Exceptions/ExtraAssemblies.csv | 266 ++++++++++++++++++ .../StaticAnalysis/Exceptions/HelpIssues.csv | 112 ++++++++ .../Exceptions/MissingAssemblies.csv | 6 + .../StaticAnalysis/HelpAnalyzer/HelpIssue.cs | 16 +- tools/StaticAnalysis/Program.cs | 11 +- tools/StaticAnalysis/ReportLogger.cs | 11 +- tools/StaticAnalysis/StaticAnalysis.csproj | 12 + 14 files changed, 517 insertions(+), 51 deletions(-) create mode 100644 tools/StaticAnalysis/Exceptions/AssemblyVersionConflict.csv create mode 100644 tools/StaticAnalysis/Exceptions/ExtraAssemblies.csv create mode 100644 tools/StaticAnalysis/Exceptions/HelpIssues.csv create mode 100644 tools/StaticAnalysis/Exceptions/MissingAssemblies.csv diff --git a/tools/StaticAnalysis/AnalysisLogger.cs b/tools/StaticAnalysis/AnalysisLogger.cs index 8f495ee7008a..78e3d550f8e2 100644 --- a/tools/StaticAnalysis/AnalysisLogger.cs +++ b/tools/StaticAnalysis/AnalysisLogger.cs @@ -26,17 +26,30 @@ namespace StaticAnalysis public abstract class AnalysisLogger { string _baseDirectory; + string _exceptionsDirectory; /// /// Create an analysis logger that will write reports to the given directory /// - /// + /// The base directory for reports + /// The directory containing exceptions form static analysis rules. + public AnalysisLogger(string baseDirectory, string exceptionsDirectory) + { + _baseDirectory = baseDirectory; + _exceptionsDirectory = exceptionsDirectory; + } + + /// + /// Create an analysis logger without exceptions + /// + /// The base directory for reports public AnalysisLogger(string baseDirectory) { _baseDirectory = baseDirectory; + _exceptionsDirectory = null; } - IList _loggers = new List(); + IList _loggers = new List(); protected virtual IList Loggers { get { return _loggers; } } /// @@ -94,7 +107,19 @@ public virtual void WriteWarning(string format, params object[] args) } var filePath = Path.Combine(_baseDirectory, fileName); - var logger = new ReportLogger(filePath, this); + ReportLogger logger; + if (_exceptionsDirectory != null && Directory.Exists(_exceptionsDirectory)) + { + var exceptionsPath = Path.Combine(_exceptionsDirectory, fileName); + WriteWarning("Using exceptions file {0}", exceptionsPath); + logger = new ReportLogger(filePath, exceptionsPath, this); + } + else + { + WriteWarning("Using no exceptions file."); + logger = new ReportLogger(filePath, this); + } + Loggers.Add(logger); return logger; } @@ -116,5 +141,31 @@ public void WriteReports() WriteReport(logger.FileName, reportText.ToString()); } } + + public void CheckForIssues(int maxSeverity) + { + var hasErrors = false; + foreach (var logger in Loggers.Where(l => l.Records.Any( r => r.Severity < maxSeverity))) + { + hasErrors = true; + StringBuilder errorText = new StringBuilder(); + errorText.AppendLine(logger.Records.First().PrintHeaders()); + foreach (var reportRecord in logger.Records) + { + errorText.AppendLine(reportRecord.FormatRecord()); + } + + WriteError("{0} Errors", logger.FileName); + WriteError(errorText.ToString()); + WriteError(""); + } + + if (hasErrors) + { + throw new InvalidOperationException(string.Format("One or more errors occurred in validation. " + + "See the analysis repots at {0} for details", + _baseDirectory)); + } + } } } diff --git a/tools/StaticAnalysis/ConsoleLogger.cs b/tools/StaticAnalysis/ConsoleLogger.cs index 1cb18d070d64..22a3b73fa90f 100644 --- a/tools/StaticAnalysis/ConsoleLogger.cs +++ b/tools/StaticAnalysis/ConsoleLogger.cs @@ -23,11 +23,15 @@ namespace StaticAnalysis public class ConsoleLogger : AnalysisLogger { + public ConsoleLogger(string baseDirectory, string exceptionsDirectory) + : base(baseDirectory, exceptionsDirectory) + { + } + public ConsoleLogger(string baseDirectory) : base(baseDirectory) { } - public override void WriteError(string error) { Console.WriteLine("### ERROR {0}", error); diff --git a/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs b/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs index a3d18897755a..b2750f981c42 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/AssemblyVersionConflict.cs @@ -100,20 +100,20 @@ public IReportRecord Parse(string line) { var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; var match = Regex.Match(line, matcher); - if (!match.Success || match.Groups.Count < 9) + if (!match.Success || match.Groups.Count < 10) { throw new InvalidOperationException(string.Format("Could not parse '{0}' as AssemblyVersionConflict record", line)); } - Directory = match.Groups[0].Value; - AssemblyName = match.Groups[1].Value; - ExpectedVersion = Version.Parse(match.Groups[2].Value); - ActualVersion = Version.Parse(match.Groups[3].Value); - ParentAssembly = match.Groups[4].Value; - Severity = int.Parse(match.Groups[5].Value); - ProblemId = int.Parse(match.Groups[6].Value); - Description = match.Groups[7].Value; - Remediation = match.Groups[8].Value; + Directory = match.Groups[1].Value; + AssemblyName = match.Groups[2].Value; + ExpectedVersion = Version.Parse(match.Groups[3].Value); + ActualVersion = Version.Parse(match.Groups[4].Value); + ParentAssembly = match.Groups[5].Value; + Severity = int.Parse(match.Groups[6].Value); + ProblemId = int.Parse(match.Groups[7].Value); + Description = match.Groups[8].Value; + Remediation = match.Groups[9].Value; return this; } diff --git a/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs b/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs index 9b232e04f673..5b0a4b07b14b 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/ExtraAssembly.cs @@ -71,17 +71,17 @@ public IReportRecord Parse(string line) { var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; var match = Regex.Match(line, matcher); - if (!match.Success || match.Groups.Count < 6) + if (!match.Success || match.Groups.Count < 7) { throw new InvalidOperationException(string.Format("Could not parse '{0}' as ExtraAssembly record", line)); } - Directory = match.Groups[0].Value; - AssemblyName = match.Groups[1].Value; - Severity = int.Parse(match.Groups[2].Value); - ProblemId = int.Parse(match.Groups[3].Value); - Description = match.Groups[4].Value; - Remediation = match.Groups[5].Value; + Directory = match.Groups[1].Value; + AssemblyName = match.Groups[2].Value; + Severity = int.Parse(match.Groups[3].Value); + ProblemId = int.Parse(match.Groups[4].Value); + Description = match.Groups[5].Value; + Remediation = match.Groups[6].Value; return this; } } diff --git a/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs b/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs index a19b7599c98c..89b4a8000970 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/MissingAssembly.cs @@ -65,19 +65,19 @@ public IReportRecord Parse(string line) { var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; var match = Regex.Match(line, matcher); - if (!match.Success || match.Groups.Count < 8) + if (!match.Success || match.Groups.Count < 9) { throw new InvalidOperationException(string.Format("Could not parse '{0}' as MissingAssembly record", line)); } - Directory = match.Groups[0].Value; - AssemblyName = match.Groups[1].Value; - AssemblyVersion = match.Groups[2].Value; - ReferencingAssembly = match.Groups[3].Value; - Severity = int.Parse(match.Groups[4].Value); - ProblemId = int.Parse(match.Groups[5].Value); - Description = match.Groups[6].Value; - Remediation = match.Groups[7].Value; + Directory = match.Groups[1].Value; + AssemblyName = match.Groups[2].Value; + AssemblyVersion = match.Groups[3].Value; + ReferencingAssembly = match.Groups[4].Value; + Severity = int.Parse(match.Groups[5].Value); + ProblemId = int.Parse(match.Groups[6].Value); + Description = match.Groups[7].Value; + Remediation = match.Groups[8].Value; return this; } diff --git a/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs b/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs index a0e2920a9a35..fe13e2ceeb86 100644 --- a/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs +++ b/tools/StaticAnalysis/DependencyAnalyzer/SharedAssemblyConflict.cs @@ -66,17 +66,17 @@ public IReportRecord Parse(string line) { var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; var match = Regex.Match(line, matcher); - if (!match.Success || match.Groups.Count < 7) + if (!match.Success || match.Groups.Count < 8) { throw new InvalidOperationException(string.Format("Could not parse '{0}' as SharedAssemblyConflict record", line)); } - AssemblyName = match.Groups[1].Value; - AssemblyVersion = Version.Parse(match.Groups[2].Value); - Severity = int.Parse(match.Groups[3].Value); - ProblemId = int.Parse(match.Groups[4].Value); - Description = match.Groups[5].Value; - Remediation = match.Groups[6].Value; + AssemblyName = match.Groups[2].Value; + AssemblyVersion = Version.Parse(match.Groups[3].Value); + Severity = int.Parse(match.Groups[4].Value); + ProblemId = int.Parse(match.Groups[5].Value); + Description = match.Groups[6].Value; + Remediation = match.Groups[7].Value; return this; } diff --git a/tools/StaticAnalysis/Exceptions/AssemblyVersionConflict.csv b/tools/StaticAnalysis/Exceptions/AssemblyVersionConflict.csv new file mode 100644 index 000000000000..a31380397327 --- /dev/null +++ b/tools/StaticAnalysis/Exceptions/AssemblyVersionConflict.csv @@ -0,0 +1,5 @@ +"Directory","AssemblyName","Expected Version","Actual Version","Parent Assembly","Severity","ProblemId","Description","Remediation" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Data.OData","5.6.2.0","5.6.4.0","Microsoft.Azure.Batch","1","1010","Assembly Microsoft.Data.OData version 5.6.2.0 referenced from Microsoft.Azure.Batch.dll does not match assembly version on disk: 5.6.4.0","Update any references to version 5.6.2.0 of assembly Microsoft.Data.OData" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.WindowsAzure.Storage","4.3.0.0","6.1.0.0","Microsoft.Azure.Batch","1","1010","Assembly Microsoft.WindowsAzure.Storage version 4.3.0.0 referenced from Microsoft.Azure.Batch.dll does not match assembly version on disk: 6.1.0.0","Update any references to version 4.3.0.0 of assembly Microsoft.WindowsAzure.Storage" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.WindowsAzure.Storage","6.0.0.0","6.1.0.0","Microsoft.Azure.Insights","1","1010","Assembly Microsoft.WindowsAzure.Storage version 6.0.0.0 referenced from Microsoft.Azure.Insights.dll does not match assembly version on disk: 6.1.0.0","Update any references to version 6.0.0.0 of assembly Microsoft.WindowsAzure.Storage" +"src\Package\Debug\ServiceManagement\Azure\HDInsight","Microsoft.WindowsAzure.Storage","3.0.3.0","6.0.0.0","Microsoft.Hadoop.Client","1","1010","Assembly Microsoft.WindowsAzure.Storage version 3.0.3.0 referenced from Microsoft.Hadoop.Client.dll does not match assembly version on disk: 6.0.0.0","Update any references to version 3.0.3.0 of assembly Microsoft.WindowsAzure.Storage" diff --git a/tools/StaticAnalysis/Exceptions/ExtraAssemblies.csv b/tools/StaticAnalysis/Exceptions/ExtraAssemblies.csv new file mode 100644 index 000000000000..34242053b703 --- /dev/null +++ b/tools/StaticAnalysis/Exceptions/ExtraAssemblies.csv @@ -0,0 +1,266 @@ +"Directory","AssemblyName","Severity","ProblemId","Description","Remediation" +"src\Package\Debug\ResourceManager\AzureResourceManager\Azure.Storage","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\Azure.Storage","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\Azure.Storage","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\Azure.Storage","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\Azure.Storage","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","AutoMapper.Net4","2","2000","Assembly AutoMapper.Net4 is not referenced from any cmdlets assembly","Remove assembly AutoMapper.Net4 from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.ApiManagement","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Automation","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Automation","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Automation","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Automation","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Automation","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Automation","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.AzureStackAdmin","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.AzureStackAdmin","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.AzureStackAdmin","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.AzureStackStorage","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.AzureStackStorage","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.AzureStackStorage","Microsoft.WindowsAzure.Configuration","2","2000","Assembly Microsoft.WindowsAzure.Configuration is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Configuration from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Backup","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Azure.KeyVault.Core","2","2000","Assembly Microsoft.Azure.KeyVault.Core is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.KeyVault.Core from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","Microsoft.WindowsAzure.Storage","2","2000","Assembly Microsoft.WindowsAzure.Storage is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Storage from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Batch","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Compute","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Compute","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Compute","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Compute","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Compute","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataFactories","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeAnalytics","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeAnalytics","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeAnalytics","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeAnalytics","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeAnalytics","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeAnalytics","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","Microsoft.Azure.Management.Authorization","2","2000","Assembly Microsoft.Azure.Management.Authorization is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.Management.Authorization from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Dns","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.HDInsight","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.HDInsight","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.HDInsight","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.HDInsight","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Insights","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Insights","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.KeyVault","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.KeyVault","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.KeyVault","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.KeyVault","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.KeyVault","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.KeyVault","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.LogicApp","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.LogicApp","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.LogicApp","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","AutoMapper.Net4","2","2000","Assembly AutoMapper.Net4 is not referenced from any cmdlets assembly","Remove assembly AutoMapper.Net4 from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.Azure.KeyVault.Core","2","2000","Assembly Microsoft.Azure.KeyVault.Core is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.KeyVault.Core from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","Microsoft.WindowsAzure.Storage","2","2000","Assembly Microsoft.WindowsAzure.Storage is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Storage from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Network","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.NotificationHubs","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.NotificationHubs","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.NotificationHubs","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.NotificationHubs","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.NotificationHubs","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.OperationalInsights","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RecoveryServices","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RecoveryServices","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RecoveryServices","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RecoveryServices","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RecoveryServices","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Azure.KeyVault.Core","2","2000","Assembly Microsoft.Azure.KeyVault.Core is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.KeyVault.Core from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","Microsoft.WindowsAzure.Storage","2","2000","Assembly Microsoft.WindowsAzure.Storage is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Storage from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.RedisCache","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Resources","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Resources","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Resources","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Resources","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Resources","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Resources","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.SiteRecovery","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.SiteRecovery","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.SiteRecovery","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.SiteRecovery","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.SiteRecovery","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.Azure.KeyVault.Core","2","2000","Assembly Microsoft.Azure.KeyVault.Core is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.KeyVault.Core from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","Microsoft.WindowsAzure.Storage","2","2000","Assembly Microsoft.WindowsAzure.Storage is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Storage from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Sql","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Storage","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Storage","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Storage","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Storage","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Storage","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.Azure.KeyVault.Core","2","2000","Assembly Microsoft.Azure.KeyVault.Core is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.KeyVault.Core from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.Azure.ResourceManager","2","2000","Assembly Microsoft.Azure.ResourceManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.Azure.ResourceManager from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","Microsoft.WindowsAzure.Storage","2","2000","Assembly Microsoft.WindowsAzure.Storage is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Storage from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.StreamAnalytics","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Tags","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Tags","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Tags","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Tags","Microsoft.WindowsAzure.Management","2","2000","Assembly Microsoft.WindowsAzure.Management is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Tags","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Tags","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.TrafficManager","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.UsageAggregates","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.UsageAggregates","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.UsageAggregates","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Websites","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Websites","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Websites","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Websites","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ResourceManager\AzureResourceManager\AzureRM.Websites","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Automation","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Automation","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Automation","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Automation","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Automation","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Azure.Storage","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Azure.Storage","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Azure.Storage","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Azure.Storage","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Azure.Storage","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","AutoMapper.Net4","2","2000","Assembly AutoMapper.Net4 is not referenced from any cmdlets assembly","Remove assembly AutoMapper.Net4 from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","Microsoft.WindowsAzure.Configuration","2","2000","Assembly Microsoft.WindowsAzure.Configuration is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Configuration from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Compute","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ExpressRoute","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ExpressRoute","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ExpressRoute","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ExpressRoute","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ExpressRoute","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\HDInsight","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\HDInsight","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\HDInsight","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\HDInsight","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\HDInsight","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ManagedCache","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ManagedCache","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ManagedCache","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ManagedCache","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\ManagedCache","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Networking","AutoMapper.Net4","2","2000","Assembly AutoMapper.Net4 is not referenced from any cmdlets assembly","Remove assembly AutoMapper.Net4 from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Networking","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Networking","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Networking","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RecoveryServices","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RecoveryServices","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RecoveryServices","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RecoveryServices","Microsoft.WindowsAzure.Management.Storage","2","2000","Assembly Microsoft.WindowsAzure.Management.Storage is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management.Storage from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RecoveryServices","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RecoveryServices","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RemoteApp","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RemoteApp","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RemoteApp","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RemoteApp","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\RemoteApp","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","AutoMapper.Net4","2","2000","Assembly AutoMapper.Net4 is not referenced from any cmdlets assembly","Remove assembly AutoMapper.Net4 from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","Microsoft.WindowsAzure.Configuration","2","2000","Assembly Microsoft.WindowsAzure.Configuration is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Configuration from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","Microsoft.WindowsAzure.Management.TrafficManager","2","2000","Assembly Microsoft.WindowsAzure.Management.TrafficManager is not referenced from any cmdlets assembly","Remove assembly Microsoft.WindowsAzure.Management.TrafficManager from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Services","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Sql","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Sql","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Sql","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Sql","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\Sql","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\StorSimple","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\StorSimple","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\StorSimple","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\StorSimple","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\StorSimple","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","Microsoft.Data.Edm","2","2000","Assembly Microsoft.Data.Edm is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Edm from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","Microsoft.Data.OData","2","2000","Assembly Microsoft.Data.OData is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.OData from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","Microsoft.Data.Services.Client","2","2000","Assembly Microsoft.Data.Services.Client is not referenced from any cmdlets assembly","Remove assembly Microsoft.Data.Services.Client from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms","2","2000","Assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms is not referenced from any cmdlets assembly","Remove assembly Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","Microsoft.Threading.Tasks.Extensions.Desktop","2","2000","Assembly Microsoft.Threading.Tasks.Extensions.Desktop is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions.Desktop from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","Microsoft.Threading.Tasks.Extensions","2","2000","Assembly Microsoft.Threading.Tasks.Extensions is not referenced from any cmdlets assembly","Remove assembly Microsoft.Threading.Tasks.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","System.Net.Http.Extensions","2","2000","Assembly System.Net.Http.Extensions is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Extensions from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","System.Net.Http.Primitives","2","2000","Assembly System.Net.Http.Primitives is not referenced from any cmdlets assembly","Remove assembly System.Net.Http.Primitives from the project and regenerate the Wix file" +"src\Package\Debug\ServiceManagement\Azure\TrafficManager","System.Spatial","2","2000","Assembly System.Spatial is not referenced from any cmdlets assembly","Remove assembly System.Spatial from the project and regenerate the Wix file" diff --git a/tools/StaticAnalysis/Exceptions/HelpIssues.csv b/tools/StaticAnalysis/Exceptions/HelpIssues.csv new file mode 100644 index 000000000000..28c9bc941b80 --- /dev/null +++ b/tools/StaticAnalysis/Exceptions/HelpIssues.csv @@ -0,0 +1,112 @@ +"Assembly","HelpFile","Target","Severity","ProblemId","Description","Remediation" +"Microsoft.Azure.Commands.ResourceManager.Automation.dll","Microsoft.Azure.Commands.ResourceManager.Automation.dll-help.xml","Microsoft.Azure.Commands.Automation.Cmdlet.GetAzureAutomationJobOutputRecord","1","6050","Help missing for cmdlet Get-AzureRmAutomationJobOutputRecord implemented by class Microsoft.Azure.Commands.Automation.Cmdlet.GetAzureAutomationJobOutputRecord","Add Help record for cmdlet Get-AzureRmAutomationJobOutputRecord to help file." +"Microsoft.Azure.Commands.ResourceManager.Automation.dll","Microsoft.Azure.Commands.ResourceManager.Automation.dll-help.xml","Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationDscNodeConfiguration","1","6050","Help missing for cmdlet Remove-AzureRmAutomationDscNodeConfiguration implemented by class Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationDscNodeConfiguration","Add Help record for cmdlet Remove-AzureRmAutomationDscNodeConfiguration to help file." +"Microsoft.Azure.Commands.ResourceManager.Automation.dll","Microsoft.Azure.Commands.ResourceManager.Automation.dll-help.xml","Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationDscConfiguration","1","6050","Help missing for cmdlet Remove-AzureRmAutomationDscConfiguration implemented by class Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationDscConfiguration","Add Help record for cmdlet Remove-AzureRmAutomationDscConfiguration to help file." +"Microsoft.AzureStack.Commands.StorageAdmin.dll","Microsoft.AzureStack.Commands.StorageAdmin.dll-Help.xml","Microsoft.AzureStack.Commands.StorageAdmin.GetEvent","1","6050","Help missing for cmdlet Get-ACSEvent implemented by class Microsoft.AzureStack.Commands.StorageAdmin.GetEvent","Add Help record for cmdlet Get-ACSEvent to help file." +"Microsoft.Azure.Commands.Compute.dll","Microsoft.Azure.Commands.Compute.dll-Help.xml","Microsoft.Azure.Commands.Compute.GetAzureRmVMAEMExtension","1","6050","Help missing for cmdlet Get-AzureRmVMAEMExtension implemented by class Microsoft.Azure.Commands.Compute.GetAzureRmVMAEMExtension","Add Help record for cmdlet Get-AzureRmVMAEMExtension to help file." +"Microsoft.Azure.Commands.Compute.dll","Microsoft.Azure.Commands.Compute.dll-Help.xml","Microsoft.Azure.Commands.Compute.RemoveAzureRmVMAEMExtension","1","6050","Help missing for cmdlet Remove-AzureRmVMAEMExtension implemented by class Microsoft.Azure.Commands.Compute.RemoveAzureRmVMAEMExtension","Add Help record for cmdlet Remove-AzureRmVMAEMExtension to help file." +"Microsoft.Azure.Commands.Compute.dll","Microsoft.Azure.Commands.Compute.dll-Help.xml","Microsoft.Azure.Commands.Compute.SetAzureRmVMAEMExtension","1","6050","Help missing for cmdlet Set-AzureRmVMAEMExtension implemented by class Microsoft.Azure.Commands.Compute.SetAzureRmVMAEMExtension","Add Help record for cmdlet Set-AzureRmVMAEMExtension to help file." +"Microsoft.Azure.Commands.Compute.dll","Microsoft.Azure.Commands.Compute.dll-Help.xml","Microsoft.Azure.Commands.Compute.TestAzureRmVMAEMExtension","1","6050","Help missing for cmdlet Test-AzureRmVMAEMExtension implemented by class Microsoft.Azure.Commands.Compute.TestAzureRmVMAEMExtension","Add Help record for cmdlet Test-AzureRmVMAEMExtension to help file." +"Microsoft.Azure.Commands.Compute.dll","Microsoft.Azure.Commands.Compute.dll-Help.xml","Microsoft.Azure.Commands.Compute.SetAzureVMBGInfoExtensionCommand","1","6050","Help missing for cmdlet Set-AzureRmVMBginfoExtension implemented by class Microsoft.Azure.Commands.Compute.SetAzureVMBGInfoExtensionCommand","Add Help record for cmdlet Set-AzureRmVMBginfoExtension to help file." +"Microsoft.Azure.Commands.Compute.dll","Microsoft.Azure.Commands.Compute.dll-Help.xml","Microsoft.Azure.Commands.Compute.SetAzureVMPlanCommand","1","6050","Help missing for cmdlet Set-AzureRmVMPlan implemented by class Microsoft.Azure.Commands.Compute.SetAzureVMPlanCommand","Add Help record for cmdlet Set-AzureRmVMPlan to help file." +"Microsoft.Azure.Commands.Management.Storage.dll","Microsoft.Azure.Commands.Management.Storage.dll-Help.xml","Microsoft.Azure.Commands.Management.Storage.SetAzureRmCurrentStorageAccount","1","6050","Help missing for cmdlet Set-AzureRmCurrentStorageAccount implemented by class Microsoft.Azure.Commands.Management.Storage.SetAzureRmCurrentStorageAccount","Add Help record for cmdlet Set-AzureRmCurrentStorageAccount to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.NewAzureApplicationGatewayPathRuleConfigCommand","1","6050","Help missing for cmdlet New-AzureRmApplicationGatewayPathRuleConfig implemented by class Microsoft.Azure.Commands.Network.NewAzureApplicationGatewayPathRuleConfigCommand","Add Help record for cmdlet New-AzureRmApplicationGatewayPathRuleConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.AddAzureApplicationGatewayProbeConfigCommand","1","6050","Help missing for cmdlet Add-AzureRmApplicationGatewayProbeConfig implemented by class Microsoft.Azure.Commands.Network.AddAzureApplicationGatewayProbeConfigCommand","Add Help record for cmdlet Add-AzureRmApplicationGatewayProbeConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.GetAzureApplicationGatewayProbeConfigCommand","1","6050","Help missing for cmdlet Get-AzureRmApplicationGatewayProbeConfig implemented by class Microsoft.Azure.Commands.Network.GetAzureApplicationGatewayProbeConfigCommand","Add Help record for cmdlet Get-AzureRmApplicationGatewayProbeConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.NewAzureApplicationGatewayProbeConfigCommand","1","6050","Help missing for cmdlet New-AzureRmApplicationGatewayProbeConfig implemented by class Microsoft.Azure.Commands.Network.NewAzureApplicationGatewayProbeConfigCommand","Add Help record for cmdlet New-AzureRmApplicationGatewayProbeConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.RemoveAzureApplicationGatewayProbeConfigCommand","1","6050","Help missing for cmdlet Remove-AzureRmApplicationGatewayProbeConfig implemented by class Microsoft.Azure.Commands.Network.RemoveAzureApplicationGatewayProbeConfigCommand","Add Help record for cmdlet Remove-AzureRmApplicationGatewayProbeConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.SetAzureApplicationGatewayProbeConfigCommand","1","6050","Help missing for cmdlet Set-AzureRmApplicationGatewayProbeConfig implemented by class Microsoft.Azure.Commands.Network.SetAzureApplicationGatewayProbeConfigCommand","Add Help record for cmdlet Set-AzureRmApplicationGatewayProbeConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.AddAzureApplicationGatewayUrlPathMapConfigCommand","1","6050","Help missing for cmdlet Add-AzureRmApplicationGatewayUrlPathMapConfig implemented by class Microsoft.Azure.Commands.Network.AddAzureApplicationGatewayUrlPathMapConfigCommand","Add Help record for cmdlet Add-AzureRmApplicationGatewayUrlPathMapConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.GetAzureApplicationGatewayUrlPathMapConfigCommand","1","6050","Help missing for cmdlet Get-AzureRmApplicationGatewayUrlPathMapConfig implemented by class Microsoft.Azure.Commands.Network.GetAzureApplicationGatewayUrlPathMapConfigCommand","Add Help record for cmdlet Get-AzureRmApplicationGatewayUrlPathMapConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.NewAzureApplicationGatewayUrlPathMapConfigCommand","1","6050","Help missing for cmdlet New-AzureRmApplicationGatewayUrlPathMapConfig implemented by class Microsoft.Azure.Commands.Network.NewAzureApplicationGatewayUrlPathMapConfigCommand","Add Help record for cmdlet New-AzureRmApplicationGatewayUrlPathMapConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.RemoveAzureApplicationGatewayUrlPathMapConfigCommand","1","6050","Help missing for cmdlet Remove-AzureRmApplicationGatewayUrlPathMapConfig implemented by class Microsoft.Azure.Commands.Network.RemoveAzureApplicationGatewayUrlPathMapConfigCommand","Add Help record for cmdlet Remove-AzureRmApplicationGatewayUrlPathMapConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.SetAzureApplicationGatewayUrlPathMapConfigCommand","1","6050","Help missing for cmdlet Set-AzureRmApplicationGatewayUrlPathMapConfig implemented by class Microsoft.Azure.Commands.Network.SetAzureApplicationGatewayUrlPathMapConfigCommand","Add Help record for cmdlet Set-AzureRmApplicationGatewayUrlPathMapConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.AddAzureExpressRouteCircuitAuthorizationCommand","1","6050","Help missing for cmdlet Add-AzureRmExpressRouteCircuitAuthorization implemented by class Microsoft.Azure.Commands.Network.AddAzureExpressRouteCircuitAuthorizationCommand","Add Help record for cmdlet Add-AzureRmExpressRouteCircuitAuthorization to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.GetAzureExpressRouteCircuitAuthorizationCommand","1","6050","Help missing for cmdlet Get-AzureRmExpressRouteCircuitAuthorization implemented by class Microsoft.Azure.Commands.Network.GetAzureExpressRouteCircuitAuthorizationCommand","Add Help record for cmdlet Get-AzureRmExpressRouteCircuitAuthorization to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.NewAzureExpressRouteCircuitAuthorizationCommand","1","6050","Help missing for cmdlet New-AzureRmExpressRouteCircuitAuthorization implemented by class Microsoft.Azure.Commands.Network.NewAzureExpressRouteCircuitAuthorizationCommand","Add Help record for cmdlet New-AzureRmExpressRouteCircuitAuthorization to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.RemoveAzureExpressRouteCircuitAuthorizationCommand","1","6050","Help missing for cmdlet Remove-AzureRmExpressRouteCircuitAuthorization implemented by class Microsoft.Azure.Commands.Network.RemoveAzureExpressRouteCircuitAuthorizationCommand","Add Help record for cmdlet Remove-AzureRmExpressRouteCircuitAuthorization to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.GetAzureVpnClientRootCertificates","1","6050","Help missing for cmdlet Get-AzureRmVpnClientRootCertificate implemented by class Microsoft.Azure.Commands.Network.GetAzureVpnClientRootCertificates","Add Help record for cmdlet Get-AzureRmVpnClientRootCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.GetAzureVpnClientRevokedCertificates","1","6050","Help missing for cmdlet Get-AzureRmVpnClientRevokedCertificate implemented by class Microsoft.Azure.Commands.Network.GetAzureVpnClientRevokedCertificates","Add Help record for cmdlet Get-AzureRmVpnClientRevokedCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.AddAzureVpnClientRootCertificateCommand","1","6050","Help missing for cmdlet Add-AzureRmVpnClientRootCertificate implemented by class Microsoft.Azure.Commands.Network.AddAzureVpnClientRootCertificateCommand","Add Help record for cmdlet Add-AzureRmVpnClientRootCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.AddAzureVpnClientRevokedCertificateCommand","1","6050","Help missing for cmdlet Add-AzureRmVpnClientRevokedCertificate implemented by class Microsoft.Azure.Commands.Network.AddAzureVpnClientRevokedCertificateCommand","Add Help record for cmdlet Add-AzureRmVpnClientRevokedCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.NewAzureVpnClientRootCertificateCommand","1","6050","Help missing for cmdlet New-AzureRmVpnClientRootCertificate implemented by class Microsoft.Azure.Commands.Network.NewAzureVpnClientRootCertificateCommand","Add Help record for cmdlet New-AzureRmVpnClientRootCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.NewAzureVpnClientRevokedCertificateCommand","1","6050","Help missing for cmdlet New-AzureRmVpnClientRevokedCertificate implemented by class Microsoft.Azure.Commands.Network.NewAzureVpnClientRevokedCertificateCommand","Add Help record for cmdlet New-AzureRmVpnClientRevokedCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.ResizeAzureVirtualNetworkGatewayCommand","1","6050","Help missing for cmdlet Resize-AzureRmVirtualNetworkGateway implemented by class Microsoft.Azure.Commands.Network.ResizeAzureVirtualNetworkGatewayCommand","Add Help record for cmdlet Resize-AzureRmVirtualNetworkGateway to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.RemoveAzureVpnClientRevokedCertificateCommand","1","6050","Help missing for cmdlet Remove-AzureRmVpnClientRevokedCertificate implemented by class Microsoft.Azure.Commands.Network.RemoveAzureVpnClientRevokedCertificateCommand","Add Help record for cmdlet Remove-AzureRmVpnClientRevokedCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.RemoveAzureVpnClientRootCertificateCommand","1","6050","Help missing for cmdlet Remove-AzureRmVpnClientRootCertificate implemented by class Microsoft.Azure.Commands.Network.RemoveAzureVpnClientRootCertificateCommand","Add Help record for cmdlet Remove-AzureRmVpnClientRootCertificate to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.SetAzureVirtualNetworkGatewayVpnClientConfigCommand","1","6050","Help missing for cmdlet Set-AzureRmVirtualNetworkGatewayVpnClientConfig implemented by class Microsoft.Azure.Commands.Network.SetAzureVirtualNetworkGatewayVpnClientConfigCommand","Add Help record for cmdlet Set-AzureRmVirtualNetworkGatewayVpnClientConfig to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.GetAzureVpnClientPackage","1","6050","Help missing for cmdlet Get-AzureRmVpnClientPackage implemented by class Microsoft.Azure.Commands.Network.GetAzureVpnClientPackage","Add Help record for cmdlet Get-AzureRmVpnClientPackage to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.SetAzureVirtualNetworkGatewayDefaultSiteCommand","1","6050","Help missing for cmdlet Set-AzureRmVirtualNetworkGatewayDefaultSite implemented by class Microsoft.Azure.Commands.Network.SetAzureVirtualNetworkGatewayDefaultSiteCommand","Add Help record for cmdlet Set-AzureRmVirtualNetworkGatewayDefaultSite to help file." +"Microsoft.Azure.Commands.Network.dll","Microsoft.Azure.Commands.Network.dll-Help.xml","Microsoft.Azure.Commands.Network.RemoveAzureVirtualNetworkGatewayDefaultSiteCommand","1","6050","Help missing for cmdlet Remove-AzureRmVirtualNetworkGatewayDefaultSite implemented by class Microsoft.Azure.Commands.Network.RemoveAzureVirtualNetworkGatewayDefaultSiteCommand","Add Help record for cmdlet Remove-AzureRmVirtualNetworkGatewayDefaultSite to help file." +"Microsoft.Azure.Commands.Resources.dll","Microsoft.Azure.Commands.Resources.dll-Help.xml","Microsoft.Azure.Commands.ActiveDirectory.GetAzureADApplicationCommand","1","6050","Help missing for cmdlet Get-AzureRmADApplication implemented by class Microsoft.Azure.Commands.ActiveDirectory.GetAzureADApplicationCommand","Add Help record for cmdlet Get-AzureRmADApplication to help file." +"Microsoft.Azure.Commands.DataLakeStore.dll","Microsoft.Azure.Commands.DataLakeStore.dll-help.xml","Microsoft.Azure.Commands.DataLakeStore.AddAzureDataLakeStoreItemContent","1","6050","Help missing for cmdlet Add-AzureRmDataLakeStoreItemContent implemented by class Microsoft.Azure.Commands.DataLakeStore.AddAzureDataLakeStoreItemContent","Add Help record for cmdlet Add-AzureRmDataLakeStoreItemContent to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSavedSearchCommand","1","6050","Help missing for cmdlet Get-AzureRmOperationalInsightsSavedSearch implemented by class Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSavedSearchCommand","Add Help record for cmdlet Get-AzureRmOperationalInsightsSavedSearch to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSavedSearchResultsCommand","1","6050","Help missing for cmdlet Get-AzureRmOperationalInsightsSavedSearchResults implemented by class Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSavedSearchResultsCommand","Add Help record for cmdlet Get-AzureRmOperationalInsightsSavedSearchResults to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSchemaCommand","1","6050","Help missing for cmdlet Get-AzureRmOperationalInsightsSchema implemented by class Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSchemaCommand","Add Help record for cmdlet Get-AzureRmOperationalInsightsSchema to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSearchResultsCommand","1","6050","Help missing for cmdlet Get-AzureRmOperationalInsightsSearchResults implemented by class Microsoft.Azure.Commands.OperationalInsights.GetAzureOperationalInsightsSearchResultsCommand","Add Help record for cmdlet Get-AzureRmOperationalInsightsSearchResults to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.NewAzureOperationalInsightsSavedSearchCommand","1","6050","Help missing for cmdlet New-AzureRmOperationalInsightsSavedSearch implemented by class Microsoft.Azure.Commands.OperationalInsights.NewAzureOperationalInsightsSavedSearchCommand","Add Help record for cmdlet New-AzureRmOperationalInsightsSavedSearch to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.SetAzureOperationalInsightsSavedSearchCommand","1","6050","Help missing for cmdlet Set-AzureRmOperationalInsightsSavedSearch implemented by class Microsoft.Azure.Commands.OperationalInsights.SetAzureOperationalInsightsSavedSearchCommand","Add Help record for cmdlet Set-AzureRmOperationalInsightsSavedSearch to help file." +"Microsoft.Azure.Commands.OperationalInsights.dll","Microsoft.Azure.Commands.OperationalInsights.dll-Help.xml","Microsoft.Azure.Commands.OperationalInsights.RemoveAzureOperationalInsightsSavedSearchCommand","1","6050","Help missing for cmdlet Remove-AzureRmOperationalInsightsSavedSearch implemented by class Microsoft.Azure.Commands.OperationalInsights.RemoveAzureOperationalInsightsSavedSearchCommand","Add Help record for cmdlet Remove-AzureRmOperationalInsightsSavedSearch to help file." +"Microsoft.Azure.Commands.Sql.dll","Microsoft.Azure.Commands.Sql.dll-Help.xml","Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.GetAzureSqlServerDisasterRecoveryConfiguration","1","6050","Help missing for cmdlet Get-AzureRmSqlServerDisasterRecoveryConfiguration implemented by class Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.GetAzureSqlServerDisasterRecoveryConfiguration","Add Help record for cmdlet Get-AzureRmSqlServerDisasterRecoveryConfiguration to help file." +"Microsoft.Azure.Commands.Sql.dll","Microsoft.Azure.Commands.Sql.dll-Help.xml","Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.GetAzureSqlServerDisasterRecoveryConfigurationActivity","1","6050","Help missing for cmdlet Get-AzureRmSqlServerDisasterRecoveryConfigurationActivity implemented by class Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.GetAzureSqlServerDisasterRecoveryConfigurationActivity","Add Help record for cmdlet Get-AzureRmSqlServerDisasterRecoveryConfigurationActivity to help file." +"Microsoft.Azure.Commands.Sql.dll","Microsoft.Azure.Commands.Sql.dll-Help.xml","Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.NewAzureSqlServerDisasterRecoveryConfiguration","1","6050","Help missing for cmdlet New-AzureRmSqlServerDisasterRecoveryConfiguration implemented by class Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.NewAzureSqlServerDisasterRecoveryConfiguration","Add Help record for cmdlet New-AzureRmSqlServerDisasterRecoveryConfiguration to help file." +"Microsoft.Azure.Commands.Sql.dll","Microsoft.Azure.Commands.Sql.dll-Help.xml","Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.RemoveAzureSqlServerDisasterRecoveryConfiguration","1","6050","Help missing for cmdlet Remove-AzureRmSqlServerDisasterRecoveryConfiguration implemented by class Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.RemoveAzureSqlServerDisasterRecoveryConfiguration","Add Help record for cmdlet Remove-AzureRmSqlServerDisasterRecoveryConfiguration to help file." +"Microsoft.Azure.Commands.Sql.dll","Microsoft.Azure.Commands.Sql.dll-Help.xml","Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.SetAzureSqlServerDisasterRecoveryConfiguration","1","6050","Help missing for cmdlet Set-AzureRmSqlServerDisasterRecoveryConfiguration implemented by class Microsoft.Azure.Commands.Sql.ServerDisasterRecoveryConfiguration.Cmdlet.SetAzureSqlServerDisasterRecoveryConfiguration","Add Help record for cmdlet Set-AzureRmSqlServerDisasterRecoveryConfiguration to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.DisableAzureTrafficManagerEndpoint","1","6050","Help missing for cmdlet Disable-AzureRmTrafficManagerEndpoint implemented by class Microsoft.Azure.Commands.TrafficManager.DisableAzureTrafficManagerEndpoint","Add Help record for cmdlet Disable-AzureRmTrafficManagerEndpoint to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.EnableAzureTrafficManagerEndpoint","1","6050","Help missing for cmdlet Enable-AzureRmTrafficManagerEndpoint implemented by class Microsoft.Azure.Commands.TrafficManager.EnableAzureTrafficManagerEndpoint","Add Help record for cmdlet Enable-AzureRmTrafficManagerEndpoint to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.SetAzureTrafficManagerEndpoint","1","6050","Help missing for cmdlet Set-AzureRmTrafficManagerEndpoint implemented by class Microsoft.Azure.Commands.TrafficManager.SetAzureTrafficManagerEndpoint","Add Help record for cmdlet Set-AzureRmTrafficManagerEndpoint to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.GetAzureTrafficManagerEndpoint","1","6050","Help missing for cmdlet Get-AzureRmTrafficManagerEndpoint implemented by class Microsoft.Azure.Commands.TrafficManager.GetAzureTrafficManagerEndpoint","Add Help record for cmdlet Get-AzureRmTrafficManagerEndpoint to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.RemoveAzureTrafficManagerEndpoint","1","6050","Help missing for cmdlet Remove-AzureRmTrafficManagerEndpoint implemented by class Microsoft.Azure.Commands.TrafficManager.RemoveAzureTrafficManagerEndpoint","Add Help record for cmdlet Remove-AzureRmTrafficManagerEndpoint to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.NewAzureTrafficManagerEndpoint","1","6050","Help missing for cmdlet New-AzureRmTrafficManagerEndpoint implemented by class Microsoft.Azure.Commands.TrafficManager.NewAzureTrafficManagerEndpoint","Add Help record for cmdlet New-AzureRmTrafficManagerEndpoint to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.DisableAzureTrafficManagerProfile","1","6050","Help missing for cmdlet Disable-AzureRmTrafficManagerProfile implemented by class Microsoft.Azure.Commands.TrafficManager.DisableAzureTrafficManagerProfile","Add Help record for cmdlet Disable-AzureRmTrafficManagerProfile to help file." +"Microsoft.Azure.Commands.TrafficManager.dll","Microsoft.Azure.Commands.TrafficManager.dll-help.xml","Microsoft.Azure.Commands.TrafficManager.EnableAzureTrafficManagerProfile","1","6050","Help missing for cmdlet Enable-AzureRmTrafficManagerProfile implemented by class Microsoft.Azure.Commands.TrafficManager.EnableAzureTrafficManagerProfile","Add Help record for cmdlet Enable-AzureRmTrafficManagerProfile to help file." +"Microsoft.Azure.Commands.Automation.dll","Microsoft.Azure.Commands.Automation.dll-help.xml","Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationConnection","1","6050","Help missing for cmdlet Remove-AzureAutomationConnection implemented by class Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationConnection","Add Help record for cmdlet Remove-AzureAutomationConnection to help file." +"Microsoft.Azure.Commands.Automation.dll","Microsoft.Azure.Commands.Automation.dll-help.xml","Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationConnectionType","1","6050","Help missing for cmdlet Remove-AzureAutomationConnectionType implemented by class Microsoft.Azure.Commands.Automation.Cmdlet.RemoveAzureAutomationConnectionType","Add Help record for cmdlet Remove-AzureAutomationConnectionType to help file." +"Microsoft.Azure.Commands.Automation.dll","Microsoft.Azure.Commands.Automation.dll-help.xml","Microsoft.Azure.Commands.Automation.Cmdlet.SetAzureAutomationConnectionFieldValue","1","6050","Help missing for cmdlet Set-AzureAutomationConnectionFieldValue implemented by class Microsoft.Azure.Commands.Automation.Cmdlet.SetAzureAutomationConnectionFieldValue","Add Help record for cmdlet Set-AzureAutomationConnectionFieldValue to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.dll-Help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.Extensions.NewAzureVMSqlServerKeyVaultCredentialConfigCommand","1","6050","Help missing for cmdlet New-AzureVMSqlServerKeyVaultCredentialConfig implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.Extensions.NewAzureVMSqlServerKeyVaultCredentialConfigCommand","Add Help record for cmdlet New-AzureVMSqlServerKeyVaultCredentialConfig to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.dll-Help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.SetAzureBootDiagnosticsCommand","1","6050","Help missing for cmdlet Set-AzureBootDiagnostics implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.SetAzureBootDiagnosticsCommand","Add Help record for cmdlet Set-AzureBootDiagnostics to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll-Help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions.GetAzureServiceAvailableExtensionCommand","1","6050","Help missing for cmdlet Get-AzurePlatformExtension implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions.GetAzureServiceAvailableExtensionCommand","Add Help record for cmdlet Get-AzurePlatformExtension to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll-Help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.ImagePublishing.NewAzurePlatformMarketplaceImageConfig","1","6050","Help missing for cmdlet New-AzurePlatformMarketplaceImageConfig implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.ImagePublishing.NewAzurePlatformMarketplaceImageConfig","Add Help record for cmdlet New-AzurePlatformMarketplaceImageConfig to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll-Help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.ImagePublishing.NewAzurePlatformComputeImageConfig","1","6050","Help missing for cmdlet New-AzurePlatformComputeImageConfig implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.ImagePublishing.NewAzurePlatformComputeImageConfig","Add Help record for cmdlet New-AzurePlatformComputeImageConfig to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureCrossConnectionCommand","1","6050","Help missing for cmdlet Get-AzureCrossConnection implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureCrossConnectionCommand","Add Help record for cmdlet Get-AzureCrossConnection to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.NewAzureCrossConnectionCommand","1","6050","Help missing for cmdlet New-AzureCrossConnection implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.NewAzureCrossConnectionCommand","Add Help record for cmdlet New-AzureCrossConnection to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.SetAzureCrossConnectionCommand","1","6050","Help missing for cmdlet Set-AzureCrossConnection implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.SetAzureCrossConnectionCommand","Add Help record for cmdlet Set-AzureCrossConnection to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringArpInfoCommand","1","6050","Help missing for cmdlet Get-AzureDedicatedCircuitPeeringArpInfo implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringArpInfoCommand","Add Help record for cmdlet Get-AzureDedicatedCircuitPeeringArpInfo to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringRouteTableInfoCommand","1","6050","Help missing for cmdlet Get-AzureDedicatedCircuitPeeringRouteTableInfo implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringRouteTableInfoCommand","Add Help record for cmdlet Get-AzureDedicatedCircuitPeeringRouteTableInfo to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringRouteTableSummaryCommand","1","6050","Help missing for cmdlet Get-AzureDedicatedCircuitPeeringRouteTableSummary implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringRouteTableSummaryCommand","Add Help record for cmdlet Get-AzureDedicatedCircuitPeeringRouteTableSummary to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringStatsCommand","1","6050","Help missing for cmdlet Get-AzureDedicatedCircuitStats implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringStatsCommand","Add Help record for cmdlet Get-AzureDedicatedCircuitStats to help file." +"Microsoft.WindowsAzure.Commands.ExpressRoute.dll","Microsoft.WindowsAzure.Commands.ExpressRoute.dll-Help.xml","Microsoft.WindowsAzure.Commands.ExpressRoute.SetAzureDedicatedCircuitPropertiesCommand","1","6050","Help missing for cmdlet Set-AzureDedicatedCircuitProperties implemented by class Microsoft.WindowsAzure.Commands.ExpressRoute.SetAzureDedicatedCircuitPropertiesCommand","Add Help record for cmdlet Set-AzureDedicatedCircuitProperties to help file." +"Microsoft.WindowsAzure.Commands.HDInsight.dll","Microsoft.WindowsAzure.Commands.HDInsight.dll-Help.xml","Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.AddAzureHDInsightScriptActionCmdlet","1","6050","Help missing for cmdlet Add-AzureHDInsightScriptAction implemented by class Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.AddAzureHDInsightScriptActionCmdlet","Add Help record for cmdlet Add-AzureHDInsightScriptAction to help file." +"Microsoft.WindowsAzure.Commands.HDInsight.dll","Microsoft.WindowsAzure.Commands.HDInsight.dll-Help.xml","Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.GrantAzureHdinsightRdpAccessCmdlet","1","6050","Help missing for cmdlet Grant-AzureHDInsightRdpAccess implemented by class Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.GrantAzureHdinsightRdpAccessCmdlet","Add Help record for cmdlet Grant-AzureHDInsightRdpAccess to help file." +"Microsoft.WindowsAzure.Commands.HDInsight.dll","Microsoft.WindowsAzure.Commands.HDInsight.dll-Help.xml","Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.RevokeAzureHDInsightRdpAccessCmdlet","1","6050","Help missing for cmdlet Revoke-AzureHDInsightRdpAccess implemented by class Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.RevokeAzureHDInsightRdpAccessCmdlet","Add Help record for cmdlet Revoke-AzureHDInsightRdpAccess to help file." +"Microsoft.WindowsAzure.Commands.HDInsight.dll","Microsoft.WindowsAzure.Commands.HDInsight.dll-Help.xml","Microsoft.WindowsAzure.Commands.HDInsight.Cmdlet.PSCmdlets.SetAzureHDInsightClusterSizeCmdlet","1","6050","Help missing for cmdlet Set-AzureHDInsightClusterSize implemented by class Microsoft.WindowsAzure.Commands.HDInsight.Cmdlet.PSCmdlets.SetAzureHDInsightClusterSizeCmdlet","Add Help record for cmdlet Set-AzureHDInsightClusterSize to help file." +"Microsoft.Azure.Commands.ManagedCache.dll","Microsoft.Azure.Commands.ManagedCache.dll-help.xml","Microsoft.Azure.Commands.ManagedCache.AzureManagedCacheLocation","1","6050","Help missing for cmdlet Get-AzureManagedCacheLocation implemented by class Microsoft.Azure.Commands.ManagedCache.AzureManagedCacheLocation","Add Help record for cmdlet Get-AzureManagedCacheLocation to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkConnectionGateway","1","6050","Help missing for cmdlet Get-AzureVirtualNetworkGatewayConnection implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkConnectionGateway","Add Help record for cmdlet Get-AzureVirtualNetworkGatewayConnection to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGatewayDiagnostics","1","6050","Help missing for cmdlet Get-AzureVirtualNetworkGatewayDiagnostics implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGatewayDiagnostics","Add Help record for cmdlet Get-AzureVirtualNetworkGatewayDiagnostics to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGatewayIPsecParameters","1","6050","Help missing for cmdlet Get-AzureVirtualNetworkGatewayIPsecParameters implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGatewayIPsecParameters","Add Help record for cmdlet Get-AzureVirtualNetworkGatewayIPsecParameters to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGatewayKey","1","6050","Help missing for cmdlet Get-AzureVirtualNetworkGatewayKey implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGatewayKey","Add Help record for cmdlet Get-AzureVirtualNetworkGatewayKey to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.NewAzureVirtualNetworkGatewayCommand","1","6050","Help missing for cmdlet New-AzureVirtualNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.NewAzureVirtualNetworkGatewayCommand","Add Help record for cmdlet New-AzureVirtualNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.NewAzureVirtualNetworkGatewayConnectionCommand","1","6050","Help missing for cmdlet New-AzureVirtualNetworkGatewayConnection implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.NewAzureVirtualNetworkGatewayConnectionCommand","Add Help record for cmdlet New-AzureVirtualNetworkGatewayConnection to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureVirtualNetworkGatewayKey","1","6050","Help missing for cmdlet Reset-AzureVirtualNetworkGatewayKey implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureVirtualNetworkGatewayKey","Add Help record for cmdlet Reset-AzureVirtualNetworkGatewayKey to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.SetAzureVirtualNetworkGatewayIPsecParameters","1","6050","Help missing for cmdlet Set-AzureVirtualNetworkGatewayIPsecParameters implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.SetAzureVirtualNetworkGatewayIPsecParameters","Add Help record for cmdlet Set-AzureVirtualNetworkGatewayIPsecParameters to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.SetAzureVirtualNetworkGatewayKey","1","6050","Help missing for cmdlet Set-AzureVirtualNetworkGatewayKey implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.SetAzureVirtualNetworkGatewayKey","Add Help record for cmdlet Set-AzureVirtualNetworkGatewayKey to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.StartAzureVirtualNetworkGatewayDiagnostics","1","6050","Help missing for cmdlet Start-AzureVirtualNetworkGatewayDiagnostics implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.StartAzureVirtualNetworkGatewayDiagnostics","Add Help record for cmdlet Start-AzureVirtualNetworkGatewayDiagnostics to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.StopAzureVirtualNetworkGatewayDiagnostics","1","6050","Help missing for cmdlet Stop-AzureVirtualNetworkGatewayDiagnostics implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.StopAzureVirtualNetworkGatewayDiagnostics","Add Help record for cmdlet Stop-AzureVirtualNetworkGatewayDiagnostics to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureLocalNetworkGateway","1","6050","Help missing for cmdlet Get-AzureLocalNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureLocalNetworkGateway","Add Help record for cmdlet Get-AzureLocalNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGateway","1","6050","Help missing for cmdlet Get-AzureVirtualNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.GetAzureVirtualNetworkGateway","Add Help record for cmdlet Get-AzureVirtualNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.NewAzureLocalNetworkGateway","1","6050","Help missing for cmdlet New-AzureLocalNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.NewAzureLocalNetworkGateway","Add Help record for cmdlet New-AzureLocalNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.RemoveAzureLocalNetworkGateway","1","6050","Help missing for cmdlet Remove-AzureLocalNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.RemoveAzureLocalNetworkGateway","Add Help record for cmdlet Remove-AzureLocalNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.RemoveAzureVirtualNetworkGateway","1","6050","Help missing for cmdlet Remove-AzureVirtualNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.RemoveAzureVirtualNetworkGateway","Add Help record for cmdlet Remove-AzureVirtualNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.RemoveAzureVirtualNetworkGatewayConnection","1","6050","Help missing for cmdlet Remove-AzureVirtualNetworkGatewayConnection implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.RemoveAzureVirtualNetworkGatewayConnection","Add Help record for cmdlet Remove-AzureVirtualNetworkGatewayConnection to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureVirtualNetworkGateway","1","6050","Help missing for cmdlet Reset-AzureVirtualNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureVirtualNetworkGateway","Add Help record for cmdlet Reset-AzureVirtualNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResizeAzureVirtualNetworkGateway","1","6050","Help missing for cmdlet Resize-AzureVirtualNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResizeAzureVirtualNetworkGateway","Add Help record for cmdlet Resize-AzureVirtualNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureLocalNetworkGateway","1","6050","Help missing for cmdlet Reset-AzureLocalNetworkGateway implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureLocalNetworkGateway","Add Help record for cmdlet Reset-AzureLocalNetworkGateway to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureVirtualNetworkGatewayConnection","1","6050","Help missing for cmdlet Reset-AzureVirtualNetworkGatewayConnection implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.Network.Gateway.ResetAzureVirtualNetworkGatewayConnection","Add Help record for cmdlet Reset-AzureVirtualNetworkGatewayConnection to help file." +"Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll","Microsoft.WindowsAzure.Commands.ServiceManagement.Network.dll-help.xml","Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.GetAzureNetworkSecurityGroupConfigCommand","1","6050","Help missing for cmdlet Get-AzureNetworkSecurityGroupConfig implemented by class Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.GetAzureNetworkSecurityGroupConfigCommand","Add Help record for cmdlet Get-AzureNetworkSecurityGroupConfig to help file." +"Microsoft.WindowsAzure.Commands.RemoteApp.dll","Microsoft.WindowsAzure.Commands.RemoteApp.dll-help.xml","Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.ClearAzureRemoteAppVmStaleAdObject","1","6050","Help missing for cmdlet Clear-AzureRemoteAppVmStaleAdObject implemented by class Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.ClearAzureRemoteAppVmStaleAdObject","Add Help record for cmdlet Clear-AzureRemoteAppVmStaleAdObject to help file." +"Microsoft.WindowsAzure.Commands.RemoteApp.dll","Microsoft.WindowsAzure.Commands.RemoteApp.dll-help.xml","Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.GetAzureRemoteAppVm","1","6050","Help missing for cmdlet Get-AzureRemoteAppVM implemented by class Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.GetAzureRemoteAppVm","Add Help record for cmdlet Get-AzureRemoteAppVM to help file." +"Microsoft.WindowsAzure.Commands.RemoteApp.dll","Microsoft.WindowsAzure.Commands.RemoteApp.dll-help.xml","Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.GetAzureRemoteAppVmStaleAdObject","1","6050","Help missing for cmdlet Get-AzureRemoteAppVmStaleAdObject implemented by class Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.GetAzureRemoteAppVmStaleAdObject","Add Help record for cmdlet Get-AzureRemoteAppVmStaleAdObject to help file." +"Microsoft.WindowsAzure.Commands.RemoteApp.dll","Microsoft.WindowsAzure.Commands.RemoteApp.dll-help.xml","Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.RestartAzureRemoteAppVm","1","6050","Help missing for cmdlet Restart-AzureRemoteAppVM implemented by class Microsoft.WindowsAzure.Management.RemoteApp.Cmdlets.RestartAzureRemoteAppVm","Add Help record for cmdlet Restart-AzureRemoteAppVM to help file." +"Microsoft.WindowsAzure.Commands.Profile.dll","Microsoft.WindowsAzure.Commands.Profile.dll-Help.xml","Microsoft.WindowsAzure.Commands.Profile.EnableAzureDataCollectionCommand","1","6050","Help missing for cmdlet Enable-AzureDataCollection implemented by class Microsoft.WindowsAzure.Commands.Profile.EnableAzureDataCollectionCommand","Add Help record for cmdlet Enable-AzureDataCollection to help file." +"Microsoft.WindowsAzure.Commands.Profile.dll","Microsoft.WindowsAzure.Commands.Profile.dll-Help.xml","Microsoft.WindowsAzure.Commands.Profile.DisableAzureDataCollectionCommand","1","6050","Help missing for cmdlet Disable-AzureDataCollection implemented by class Microsoft.WindowsAzure.Commands.Profile.DisableAzureDataCollectionCommand","Add Help record for cmdlet Disable-AzureDataCollection to help file." +"Microsoft.WindowsAzure.Commands.SqlDatabase.dll","Microsoft.WindowsAzure.Commands.SqlDatabase.dll-Help.xml","Microsoft.WindowsAzure.Commands.SqlDatabase.Database.Cmdlet.GetAzureSqlDatabaseUsages","1","6050","Help missing for cmdlet Get-AzureSqlDatabaseUsages implemented by class Microsoft.WindowsAzure.Commands.SqlDatabase.Database.Cmdlet.GetAzureSqlDatabaseUsages","Add Help record for cmdlet Get-AzureSqlDatabaseUsages to help file." diff --git a/tools/StaticAnalysis/Exceptions/MissingAssemblies.csv b/tools/StaticAnalysis/Exceptions/MissingAssemblies.csv new file mode 100644 index 000000000000..0423039893b0 --- /dev/null +++ b/tools/StaticAnalysis/Exceptions/MissingAssemblies.csv @@ -0,0 +1,6 @@ +"Directory","Assembly Name","Assembly Version","Referencing Assembly","Severity","ProblemId","Description","Remediation" +"src\Package\Debug\ServiceManagement\Azure\Compute","Microsoft.Web.Deployment","9.0.0.0","Microsoft.WindowsAzure.Commands.Utilities","0","3000","Missing assembly Microsoft.Web.Deployment referenced from Microsoft.WindowsAzure.Commands.Utilities","Ensure that the assembly is included in the Wix file or directory" +"src\Package\Debug\ServiceManagement\Azure\ManagedCache","Microsoft.Web.Deployment","9.0.0.0","Microsoft.WindowsAzure.Commands.Utilities","0","3000","Missing assembly Microsoft.Web.Deployment referenced from Microsoft.WindowsAzure.Commands.Utilities","Ensure that the assembly is included in the Wix file or directory" +"src\Package\Debug\ServiceManagement\Azure\Networking","Microsoft.Web.Deployment","9.0.0.0","Microsoft.WindowsAzure.Commands.Utilities","0","3000","Missing assembly Microsoft.Web.Deployment referenced from Microsoft.WindowsAzure.Commands.Utilities","Ensure that the assembly is included in the Wix file or directory" +"src\Package\Debug\ServiceManagement\Azure\Services","Microsoft.Web.Deployment","9.0.0.0","Microsoft.WindowsAzure.Commands.Utilities","0","3000","Missing assembly Microsoft.Web.Deployment referenced from Microsoft.WindowsAzure.Commands.Utilities","Ensure that the assembly is included in the Wix file or directory" +"src\Package\Debug\ServiceManagement\Azure\Sql","Microsoft.Web.Deployment","9.0.0.0","Microsoft.WindowsAzure.Commands.Utilities","0","3000","Missing assembly Microsoft.Web.Deployment referenced from Microsoft.WindowsAzure.Commands.Utilities","Ensure that the assembly is included in the Wix file or directory" diff --git a/tools/StaticAnalysis/HelpAnalyzer/HelpIssue.cs b/tools/StaticAnalysis/HelpAnalyzer/HelpIssue.cs index 09901e78e015..669ae3535b73 100644 --- a/tools/StaticAnalysis/HelpAnalyzer/HelpIssue.cs +++ b/tools/StaticAnalysis/HelpAnalyzer/HelpIssue.cs @@ -69,18 +69,18 @@ public IReportRecord Parse(string line) { var matcher = "\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\",\"([^\"]+)\""; var match = Regex.Match(line, matcher); - if (!match.Success || match.Groups.Count < 7) + if (!match.Success || match.Groups.Count < 8) { throw new InvalidOperationException(string.Format("Could not parse '{0}' as HelpIssue record", line)); } - Assembly = match.Groups[0].Value; - HelpFile = match.Groups[1].Value; - Target = match.Groups[2].Value; - Severity = int.Parse(match.Groups[3].Value); - ProblemId = int.Parse(match.Groups[4].Value); - Description = match.Groups[5].Value; - Remediation = match.Groups[6].Value; + Assembly = match.Groups[1].Value; + HelpFile = match.Groups[2].Value; + Target = match.Groups[3].Value; + Severity = int.Parse(match.Groups[4].Value); + ProblemId = int.Parse(match.Groups[5].Value); + Description = match.Groups[6].Value; + Remediation = match.Groups[7].Value; return this; } } diff --git a/tools/StaticAnalysis/Program.cs b/tools/StaticAnalysis/Program.cs index 9f989039b0b1..2f78e1dc719c 100644 --- a/tools/StaticAnalysis/Program.cs +++ b/tools/StaticAnalysis/Program.cs @@ -48,6 +48,7 @@ public static void Main(string[] args) }; var reportsDirectory = Directory.GetCurrentDirectory(); + var exceptionsDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Exceptions"); bool logReportsDirectoryWarning = true; if (args.Length > 1 && Directory.Exists(args[1])) { @@ -55,7 +56,14 @@ public static void Main(string[] args) logReportsDirectoryWarning = false; } - var logger = new ConsoleLogger(reportsDirectory); + bool useExceptions = true; + if (args.Length > 2) + { + bool.TryParse(args[2], out useExceptions); + } + + var logger = useExceptions? new ConsoleLogger(reportsDirectory, exceptionsDirectory) : + new ConsoleLogger(reportsDirectory); if (logReportsDirectoryWarning) { @@ -72,6 +80,7 @@ public static void Main(string[] args) } logger.WriteReports(); + logger.CheckForIssues(2); } } } diff --git a/tools/StaticAnalysis/ReportLogger.cs b/tools/StaticAnalysis/ReportLogger.cs index 51c19556b1ec..767215883bfd 100644 --- a/tools/StaticAnalysis/ReportLogger.cs +++ b/tools/StaticAnalysis/ReportLogger.cs @@ -26,17 +26,18 @@ public abstract class ReportLogger { private AnalysisLogger _parent; private string _outputFile; - private string _exceptionsFile; + private string _exceptionsFilename; - public ReportLogger(string fileName, AnalysisLogger parent) : this(fileName, null, parent) + public ReportLogger(string fileName, AnalysisLogger parent) + : this(fileName, null, parent) { } - public ReportLogger(string fileName, string exceptionsFileName, AnalysisLogger parent) + public ReportLogger(string fileName, string exceptionsFilename, AnalysisLogger parent) { _parent = parent; _outputFile = fileName; - _exceptionsFile = exceptionsFileName; + _exceptionsFilename = exceptionsFilename; } protected AnalysisLogger ParentLogger { get { return _parent; } } @@ -63,7 +64,7 @@ public virtual void WriteWarning(string message) /// A typed report logger /// /// The type of the report this logger will log. - public class ReportLogger : ReportLogger where T : class, IReportRecord, new() + public class ReportLogger : ReportLogger where T : class, IReportRecord, new() { public ReportLogger(string fileName, AnalysisLogger logger) : this(fileName, null, logger) diff --git a/tools/StaticAnalysis/StaticAnalysis.csproj b/tools/StaticAnalysis/StaticAnalysis.csproj index c67499506d9b..68443e550f63 100644 --- a/tools/StaticAnalysis/StaticAnalysis.csproj +++ b/tools/StaticAnalysis/StaticAnalysis.csproj @@ -72,6 +72,18 @@ + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + From 529e45a6682e34e01fa06d0c375fd2d656b9a218 Mon Sep 17 00:00:00 2001 From: markcowl Date: Fri, 26 Feb 2016 15:49:49 -0800 Subject: [PATCH 3/6] Get exceptions from base directory --- tools/StaticAnalysis/Program.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/StaticAnalysis/Program.cs b/tools/StaticAnalysis/Program.cs index 2f78e1dc719c..02b1f5caa272 100644 --- a/tools/StaticAnalysis/Program.cs +++ b/tools/StaticAnalysis/Program.cs @@ -48,7 +48,6 @@ public static void Main(string[] args) }; var reportsDirectory = Directory.GetCurrentDirectory(); - var exceptionsDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Exceptions"); bool logReportsDirectoryWarning = true; if (args.Length > 1 && Directory.Exists(args[1])) { @@ -56,7 +55,8 @@ public static void Main(string[] args) logReportsDirectoryWarning = false; } - bool useExceptions = true; + var exceptionsDirectory = Path.Combine(reportsDirectory, "Exceptions"); + bool useExceptions = true; if (args.Length > 2) { bool.TryParse(args[2], out useExceptions); From eb417b7a8c41fc842f9eafa5c047e3bbf35e5ad1 Mon Sep 17 00:00:00 2001 From: markcowl Date: Mon, 29 Feb 2016 15:42:25 -0800 Subject: [PATCH 4/6] Adding in tests for Static Analyzer --- AzurePowershell.Test.targets | 1 + .../StaticAnalysis.Test/Constants.cs | 41 ++ .../StaticAnalysis.Test/MatchingTests.cs | 374 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 36 ++ .../StaticAnalysis.Test.csproj | 92 +++++ .../StaticAnalysis.Test/packages.config | 10 + tools/StaticAnalysis/StaticAnalysis.sln | 13 +- 7 files changed, 566 insertions(+), 1 deletion(-) create mode 100644 tools/StaticAnalysis/StaticAnalysis.Test/Constants.cs create mode 100644 tools/StaticAnalysis/StaticAnalysis.Test/MatchingTests.cs create mode 100644 tools/StaticAnalysis/StaticAnalysis.Test/Properties/AssemblyInfo.cs create mode 100644 tools/StaticAnalysis/StaticAnalysis.Test/StaticAnalysis.Test.csproj create mode 100644 tools/StaticAnalysis/StaticAnalysis.Test/packages.config diff --git a/AzurePowershell.Test.targets b/AzurePowershell.Test.targets index a4adcf2014e1..1a0ecf86db9f 100644 --- a/AzurePowershell.Test.targets +++ b/AzurePowershell.Test.targets @@ -66,6 +66,7 @@ + diff --git a/tools/StaticAnalysis/StaticAnalysis.Test/Constants.cs b/tools/StaticAnalysis/StaticAnalysis.Test/Constants.cs new file mode 100644 index 000000000000..57f52de4ab0d --- /dev/null +++ b/tools/StaticAnalysis/StaticAnalysis.Test/Constants.cs @@ -0,0 +1,41 @@ + +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +namespace StaticAnalysis.Test +{ + public class Category + { + // Service + public const string Service = "Service"; + + public const string All = "All"; + + // Owners + public const string OneSDK = "OneSDK"; + + // Acceptance type + public const string AcceptanceType = "AcceptanceType"; + + public const string CIT = "CIT"; + + public const string BVT = "BVT"; + + public const string CheckIn = "CheckIn"; + + // Run Type + public const string RunType = "RunType"; + public const string LiveOnly = "LiveOnly"; + } +} diff --git a/tools/StaticAnalysis/StaticAnalysis.Test/MatchingTests.cs b/tools/StaticAnalysis/StaticAnalysis.Test/MatchingTests.cs new file mode 100644 index 000000000000..705b4eea38a8 --- /dev/null +++ b/tools/StaticAnalysis/StaticAnalysis.Test/MatchingTests.cs @@ -0,0 +1,374 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Text; +using StaticAnalysis.DependencyAnalyzer; +using StaticAnalysis.HelpAnalyzer; +using Xunit; + +namespace StaticAnalysis.Test +{ + public class MatchingTests + { + private static Random Random = new Random(); + private static T GetClone(T baseValue) where T : class, ICloneable + { + T result = null; + if (baseValue != null) + { + result = baseValue.Clone() as T; + } + + return result; + } + + private static AssemblyVersionConflict CreateAssemblyVersionConflict(string directory, string assembly, string parentAssembly, + int problemId, bool vary = false) + { + return new AssemblyVersionConflict + { + Directory = directory != null && vary? GetClone(directory).ToUpperInvariant() : GetClone(directory), + AssemblyName = assembly!= null && vary ? GetClone(assembly).ToLowerInvariant() : GetClone(assembly), + ParentAssembly = parentAssembly != null && vary? GetClone(parentAssembly).ToUpperInvariant() : GetClone(parentAssembly), + ProblemId = problemId, + Description = GetRandomString(), + Remediation = GetRandomString(), + ActualVersion = GetRandomVersion(), + ExpectedVersion = GetRandomVersion(), + Severity = Random.Next() + }; + } + + private static HelpIssue CreateHelpIssue(string assembly, string helpFile, string target, int problemId, bool vary = false) + { + return new HelpIssue + { + Assembly = assembly != null && vary? GetClone(assembly).ToUpperInvariant() : GetClone(assembly), + HelpFile = assembly!= null && vary ? GetClone(helpFile).ToLowerInvariant() : GetClone(helpFile), + Target = target != null && vary? GetClone(target).ToUpperInvariant() : GetClone(target), + ProblemId = problemId, + Description = GetRandomString(), + Remediation = GetRandomString(), + Severity = Random.Next() + }; + } + + + private static ExtraAssembly CreateExtraAssembly(string directory, string assembly, + int problemId, bool vary = false) + { + return new ExtraAssembly + { + Directory = directory != null && vary? GetClone(directory).ToUpperInvariant() : GetClone(directory), + AssemblyName = assembly!= null && vary ? GetClone(assembly).ToLowerInvariant() : GetClone(assembly), + ProblemId = problemId, + Description = GetRandomString(), + Remediation = GetRandomString(), + Severity = Random.Next() + }; + } + + private static MissingAssembly CreateMissingAssembly(string directory, string assembly, + string version, string refAssembly, int problemId, bool vary = false) + { + return new MissingAssembly + { + Directory = directory != null && vary? GetClone(directory).ToUpperInvariant() : GetClone(directory), + AssemblyName = assembly!= null && vary ? GetClone(assembly).ToLowerInvariant() : GetClone(assembly), + AssemblyVersion = version, + ReferencingAssembly = refAssembly, + ProblemId = problemId, + Description = GetRandomString(), + Remediation = GetRandomString(), + Severity = Random.Next(), + }; + } + + private static SharedAssemblyConflict CreateSharedAssemblyConflict(string assembly, string version, + int problemId, bool vary = false) + { + return new SharedAssemblyConflict + { + + AssemblyName = assembly!= null && vary ? GetClone(assembly).ToLowerInvariant() : GetClone(assembly), + AssemblyVersion = Version.Parse(version), + ProblemId = problemId, + Description = GetRandomString(), + Remediation = GetRandomString(), + Severity = Random.Next(), + AssemblyPathsAndFileVersions = GetRandomStringVersionList() + }; + } + + private static List> GetRandomStringVersionList() + { + var result = new List>(); + result.Add(new Tuple(GetRandomString(), GetRandomVersion())); + result.Add(new Tuple(GetRandomString(), GetRandomVersion())); + return result; + } + + private static Version GetRandomVersion() + { + return new Version(Random.Next(), Random.Next(), Random.Next(), Random.Next()); + } + + private static string GetRandomString() + { + var length = Random.Next(5, 30); + var builder = new StringBuilder(); + for (int i = 0; i < length; ++i) + { + builder.Append(Random.Next('A', 'z')); + } + + return builder.ToString(); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("", null , null, int.MinValue)] + [InlineData("", "", "", int.MinValue)] + [InlineData("dir1/dir2/file/", "MyAssembly", "MyParentAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", "My.Longer.ParentAssembly", 2000)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanMatchAsssemblyVersionConflict(string directory, string assembly, string parentAssembly, int problemId) + { + var conflict1 = CreateAssemblyVersionConflict(directory, assembly, parentAssembly, problemId); + var conflict2 = CreateAssemblyVersionConflict(directory, assembly, parentAssembly, problemId, true); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("dir1/dir2/file/", "MyAssembly", "MyParentAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", "My.Longer.ParentAssembly", 2000)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanRoundTripAssemblyVersionConflict(string directory, string assembly, string parentAssembly, int problemId) + { + var conflict1 = CreateAssemblyVersionConflict(directory, assembly, parentAssembly, problemId); + var conflict2 = new AssemblyVersionConflict().Parse(conflict1.FormatRecord()); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("", null , null, int.MinValue)] + [InlineData("", "", "", int.MinValue)] + [InlineData("dir1/dir2/file/", "MyAssembly", "MyParentAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", "My.Longer.ParentAssembly", 2000)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanContrastAssemblyVersionConflict(string directory, string assembly, string parentAssembly, int problemId) + { + var conflict1 = CreateAssemblyVersionConflict(directory, assembly, parentAssembly, problemId); + var conflict2 = CreateAssemblyVersionConflict(GetRandomString(), assembly, parentAssembly, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateAssemblyVersionConflict(directory, GetRandomString(), parentAssembly, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateAssemblyVersionConflict(directory, assembly, GetRandomString(), problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateAssemblyVersionConflict(directory, assembly, parentAssembly, Random.Next()); + Assert.False(conflict1.Match(conflict2)); + } + + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("", null , int.MinValue)] + [InlineData("", "", int.MinValue)] + [InlineData("dir1/dir2/file/", "MyAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", 1000)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", 0)] + public void CanMatchExtraAssembly(string directory, string assembly, int problemId) + { + var conflict1 = CreateExtraAssembly(directory, assembly, problemId); + var conflict2 = CreateExtraAssembly(directory, assembly, problemId, true); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("dir1/dir2/file/", "MyAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", 1000)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", 0)] + public void CanRoundTripExtraAssembly(string directory, string assembly, int problemId) + { + var conflict1 = CreateExtraAssembly(directory, assembly, problemId); + var conflict2 = new ExtraAssembly().Parse(conflict1.FormatRecord()); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("", null , int.MinValue)] + [InlineData("", "", int.MinValue)] + [InlineData("dir1/dir2/file/", "MyAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", 1000)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", 0)] + public void CanContrastExtraAssembly(string directory, string assembly, int problemId) + { + var conflict1 = CreateExtraAssembly(directory, assembly, problemId); + var conflict2 = CreateExtraAssembly(GetRandomString(), assembly, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateExtraAssembly(directory, GetRandomString(), problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateExtraAssembly(directory, assembly, Random.Next()); + Assert.False(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("", null , "1.0", null, int.MinValue)] + [InlineData("", "", "2.0", "", int.MinValue)] + [InlineData("dir1/dir2/file/", "MyAssembly", "1.9.9", "MyRefAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", "9.9.999.9999", "My.Longer.Ref.Assembly", 100)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "1.2.3.4","ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanMatchMissingAssembly(string directory, string assembly, string version, string refAssembly, + int problemId) + { + var conflict1 = CreateMissingAssembly(directory, assembly, version, refAssembly, problemId); + var conflict2 = CreateMissingAssembly(directory, assembly, version, refAssembly, problemId, true); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("dir1/dir2/file/", "MyAssembly", "1.9.9", "MyRefAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", "9.9.999.9999", "My.Longer.Ref.Assembly", 100)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "1.2.3.4","ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanRoundTripMissingAssembly(string directory, string assembly, string version, string refAssembly, + int problemId) + { + var conflict1 = CreateMissingAssembly(directory, assembly, version, refAssembly, problemId); + var conflict2 = new MissingAssembly().Parse(conflict1.FormatRecord()); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("", null , "1.0", null, int.MinValue)] + [InlineData("", "", "2.0", "", int.MinValue)] + [InlineData("dir1/dir2/file/", "MyAssembly", "1.9.9", "MyRefAssembly", int.MaxValue)] + [InlineData("\\dir1\\dir2\\dir3\\", "My.Longer.Assembly", "9.9.999.9999", "My.Longer.Ref.Assembly", 100)] + [InlineData("\\dir1\\dir2\\啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "1.2.3.4","ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanContrastMissingAssembly(string directory, string assembly, string version, string refAssembly, + int problemId) + { + var conflict1 = CreateMissingAssembly(directory, assembly, version, refAssembly, problemId); + var conflict2 = CreateMissingAssembly(GetRandomString(), assembly, version, refAssembly, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateMissingAssembly(directory, GetRandomString(), version, refAssembly, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateMissingAssembly(directory, assembly, GetRandomVersion().ToString(), refAssembly, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateMissingAssembly(directory, assembly, version, GetRandomString(), problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateMissingAssembly(directory, assembly, version, refAssembly, Random.Next()); + Assert.False(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData(null, "1.0", int.MinValue)] + [InlineData("", "1.0.2", int.MinValue)] + [InlineData("MyAssembly", "9.99.999.9999", int.MaxValue)] + [InlineData("My.Longer.Assembly", "0.0.0.1", 2000)] + [InlineData("㙉㙊䵯䵰䶴䶵", "0.0.1", 0)] + public void CanMatchSharedAssemblyConflict(string assembly, string version, int problemId) + { + var conflict1 = CreateSharedAssemblyConflict(assembly, version, problemId); + var conflict2 = CreateSharedAssemblyConflict(assembly, version, problemId, true); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData("MyAssembly", "9.99.999.9999", int.MaxValue)] + [InlineData("My.Longer.Assembly", "0.0.0.1", 2000)] + [InlineData("㙉㙊䵯䵰䶴䶵", "0.0.1", 0)] + public void CanRoundTripSharedAssemblyConflict(string assembly, string version, int problemId) + { + var conflict1 = CreateSharedAssemblyConflict(assembly, version, problemId); + var conflict2 = new SharedAssemblyConflict().Parse(conflict1.FormatRecord()); + Assert.True(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData(null, "1.0", int.MinValue)] + [InlineData("", "1.0.2", int.MinValue)] + [InlineData("MyAssembly", "9.99.999.9999", int.MaxValue)] + [InlineData("My.Longer.Assembly", "0.0.0.1", 2000)] + [InlineData("㙉㙊䵯䵰䶴䶵", "0.0.1", 0)] + public void CanContrastSharedAssemblyConflict(string assembly, string version, int problemId) + { + var conflict1 = CreateSharedAssemblyConflict(assembly, version, problemId); + var conflict2 = CreateSharedAssemblyConflict(GetRandomString(), version, problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateSharedAssemblyConflict(assembly, GetRandomVersion().ToString(), problemId); + Assert.False(conflict1.Match(conflict2)); + conflict2 = CreateSharedAssemblyConflict(assembly, version, Random.Next()); + Assert.False(conflict1.Match(conflict2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData(null, null, null, int.MinValue)] + [InlineData("", "", "", int.MinValue)] + [InlineData( "MyAssembly", "MyHelpFile", "MyTarget", int.MaxValue)] + [InlineData("My.Longer.Assembly", "My.Longer.Helpfile", "My.Longer.Target", 100)] + [InlineData("啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanMatchHelpIssue(string assembly, string helpFile, string target, int problemId) + { + var help1 = CreateHelpIssue(assembly, helpFile, target, problemId); + var help2 = CreateHelpIssue(assembly, helpFile, target, problemId, true); + Assert.True(help1.Match(help2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData( "MyAssembly", "MyHelpFile", "MyTarget", int.MaxValue)] + [InlineData("My.Longer.Assembly", "My.Longer.Helpfile", "My.Longer.Target", 100)] + [InlineData("啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanRoundTripHelpIssue(string assembly, string helpFile, string target, int problemId) + { + var help1 = CreateHelpIssue(assembly, helpFile, target, problemId); + var help2 = new HelpIssue().Parse(help1.FormatRecord()); + Assert.True(help1.Match(help2)); + } + + [Theory] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [InlineData(null, null, null, int.MinValue)] + [InlineData("", "", "", int.MinValue)] + [InlineData( "MyAssembly", "MyHelpFile", "MyTarget", int.MaxValue)] + [InlineData("My.Longer.Assembly", "My.Longer.Helpfile", "My.Longer.Target", 100)] + [InlineData("啊齄丂狛狜隣郎隣兀﨩", "㙉㙊䵯䵰䶴䶵", "ᠠᡷᢀᡨᡩᡪᡫ", 0)] + public void CanContrastHelpIssue(string assembly, string helpFile, string target, int problemId) + { + var help1 = CreateHelpIssue(assembly, helpFile, target, problemId); + var help2 = CreateHelpIssue(GetRandomString(), helpFile, target, problemId); + Assert.False(help1.Match(help2)); + help2 = CreateHelpIssue(assembly, GetRandomString(), target, problemId); + Assert.False(help1.Match(help2)); + help2 = CreateHelpIssue(assembly, helpFile, GetRandomString(), problemId); + Assert.False(help1.Match(help2)); + help2 = CreateHelpIssue(assembly, helpFile, target, Random.Next()); + Assert.False(help1.Match(help2)); + } + + } +} diff --git a/tools/StaticAnalysis/StaticAnalysis.Test/Properties/AssemblyInfo.cs b/tools/StaticAnalysis/StaticAnalysis.Test/Properties/AssemblyInfo.cs new file mode 100644 index 000000000000..c4a47c3a7e47 --- /dev/null +++ b/tools/StaticAnalysis/StaticAnalysis.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("StaticAnalysis.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("StaticAnalysis.Test")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f74b11e2-939c-4a80-a325-9d88d0171861")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/tools/StaticAnalysis/StaticAnalysis.Test/StaticAnalysis.Test.csproj b/tools/StaticAnalysis/StaticAnalysis.Test/StaticAnalysis.Test.csproj new file mode 100644 index 000000000000..90c8861e7f02 --- /dev/null +++ b/tools/StaticAnalysis/StaticAnalysis.Test/StaticAnalysis.Test.csproj @@ -0,0 +1,92 @@ + + + + + + + Debug + AnyCPU + {A034BE7F-0CD8-4A03-85B3-44CC2E58B86F} + Library + Properties + StaticAnalysis.Test + StaticAnalysis.Test + v4.5 + 512 + ba98ab34 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + ..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll + True + + + ..\packages\xunit.assert.2.1.0\lib\portable-net45+win8+wp8+wpa81\xunit.assert.dll + True + + + ..\packages\xunit.extensibility.core.2.1.0\lib\portable-net45+win8+wp8+wpa81\xunit.core.dll + True + + + ..\packages\xunit.extensibility.execution.2.1.0\lib\net45\xunit.execution.desktop.dll + True + + + + + + + + + + {68384b59-ba0c-4b7b-b3f6-9c7988296c16} + StaticAnalysis + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/tools/StaticAnalysis/StaticAnalysis.Test/packages.config b/tools/StaticAnalysis/StaticAnalysis.Test/packages.config new file mode 100644 index 000000000000..dcbf45edf06b --- /dev/null +++ b/tools/StaticAnalysis/StaticAnalysis.Test/packages.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tools/StaticAnalysis/StaticAnalysis.sln b/tools/StaticAnalysis/StaticAnalysis.sln index ff18b9d7cfe9..08fc59506fdc 100644 --- a/tools/StaticAnalysis/StaticAnalysis.sln +++ b/tools/StaticAnalysis/StaticAnalysis.sln @@ -3,7 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.40629.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Static Analysis", "StaticAnalysis.csproj", "{68384B59-BA0C-4B7B-B3F6-9C7988296C16}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StaticAnalysis", "StaticAnalysis.csproj", "{68384B59-BA0C-4B7B-B3F6-9C7988296C16}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{865C472B-4679-4B71-AA4B-B85283F3475D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StaticAnalysis.Test", "StaticAnalysis.Test\StaticAnalysis.Test.csproj", "{A034BE7F-0CD8-4A03-85B3-44CC2E58B86F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,8 +19,15 @@ Global {68384B59-BA0C-4B7B-B3F6-9C7988296C16}.Debug|Any CPU.Build.0 = Debug|Any CPU {68384B59-BA0C-4B7B-B3F6-9C7988296C16}.Release|Any CPU.ActiveCfg = Release|Any CPU {68384B59-BA0C-4B7B-B3F6-9C7988296C16}.Release|Any CPU.Build.0 = Release|Any CPU + {A034BE7F-0CD8-4A03-85B3-44CC2E58B86F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A034BE7F-0CD8-4A03-85B3-44CC2E58B86F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A034BE7F-0CD8-4A03-85B3-44CC2E58B86F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A034BE7F-0CD8-4A03-85B3-44CC2E58B86F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {A034BE7F-0CD8-4A03-85B3-44CC2E58B86F} = {865C472B-4679-4B71-AA4B-B85283F3475D} + EndGlobalSection EndGlobal From 50f5d0efd612b1297144976700ed598b8a19096e Mon Sep 17 00:00:00 2001 From: markcowl Date: Mon, 29 Feb 2016 18:22:16 -0800 Subject: [PATCH 5/6] Updating Nuget package restore for static analysis tools --- build.proj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.proj b/build.proj index 1de7a0a2ce61..0dff01d87f12 100644 --- a/build.proj +++ b/build.proj @@ -137,6 +137,9 @@ + + From 8b832a116ed9f562ee6685a9c1c3d03f9dafce09 Mon Sep 17 00:00:00 2001 From: markcowl Date: Mon, 29 Feb 2016 18:56:45 -0800 Subject: [PATCH 6/6] fixing alignment per review comments --- tools/StaticAnalysis/AnalysisLogger.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/StaticAnalysis/AnalysisLogger.cs b/tools/StaticAnalysis/AnalysisLogger.cs index 78e3d550f8e2..f1a4eb91f77d 100644 --- a/tools/StaticAnalysis/AnalysisLogger.cs +++ b/tools/StaticAnalysis/AnalysisLogger.cs @@ -49,7 +49,7 @@ public AnalysisLogger(string baseDirectory) _exceptionsDirectory = null; } - IList _loggers = new List(); + IList _loggers = new List(); protected virtual IList Loggers { get { return _loggers; } } /// @@ -111,8 +111,8 @@ public virtual void WriteWarning(string format, params object[] args) if (_exceptionsDirectory != null && Directory.Exists(_exceptionsDirectory)) { var exceptionsPath = Path.Combine(_exceptionsDirectory, fileName); - WriteWarning("Using exceptions file {0}", exceptionsPath); - logger = new ReportLogger(filePath, exceptionsPath, this); + WriteWarning("Using exceptions file {0}", exceptionsPath); + logger = new ReportLogger(filePath, exceptionsPath, this); } else { @@ -145,7 +145,7 @@ public void WriteReports() public void CheckForIssues(int maxSeverity) { var hasErrors = false; - foreach (var logger in Loggers.Where(l => l.Records.Any( r => r.Severity < maxSeverity))) + foreach (var logger in Loggers.Where(l => l.Records.Any(r => r.Severity < maxSeverity))) { hasErrors = true; StringBuilder errorText = new StringBuilder();