From 112eab9beb54c10dd4a39ac7f964ee3b56f60145 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Tue, 28 Jan 2014 18:59:14 +0100 Subject: [PATCH] add implementation of IAssembly.IsPartOfDotnetFramework extension for #318 --- .../Project/Util/SharpDevelopExtensions.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Main/Base/Project/Util/SharpDevelopExtensions.cs b/src/Main/Base/Project/Util/SharpDevelopExtensions.cs index d0ee836c46..316b857e4b 100644 --- a/src/Main/Base/Project/Util/SharpDevelopExtensions.cs +++ b/src/Main/Base/Project/Util/SharpDevelopExtensions.cs @@ -474,6 +474,9 @@ namespace ICSharpCode.SharpDevelop return FileName.Create(assembly.UnresolvedAssembly.Location); } + /// + /// Gets whether the specified assembly is located in the Global Assembly Cache. + /// public static bool IsGacAssembly(this IAssembly assembly) { if (assembly == null) @@ -482,6 +485,24 @@ namespace ICSharpCode.SharpDevelop && SD.GlobalAssemblyCache.FindAssemblyInNetGac(new DomAssemblyName(assembly.FullAssemblyName)) != null; } + static readonly string[] dotnetFrameworkPublicKeys = { + "b77a5c561934e089", // mscorlib, etc. + "b03f5f7f11d50a3a", // System.Drawing, etc. + "31bf3856ad364e35" // WPF + }; + + /// + /// Gets wether the specified assembly is part of the .net Framework. + /// + public static bool IsPartOfDotnetFramework(this IAssembly assembly) + { + if (assembly == null) + throw new ArgumentNullException("assembly"); + if (assembly.UnresolvedAssembly is IProjectContent) + return false; + return dotnetFrameworkPublicKeys.Contains(new DomAssemblyName(assembly.FullAssemblyName).PublicKeyToken); + } + /// /// Gets the ambience for the specified compilation. /// Never returns null.