From 25b828694b77d6c2c57a092218edf0f62e2fcb3a Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 13 May 2010 11:46:49 +0000 Subject: [PATCH] Add "CopyLocalWorkaround" to build. (part of fix for SD2-1670 - Allow compiling .NET 4 projects without having the .NET 4 SDK installed) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5814 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/CopyLocalWorkaround.cs | 67 +++++++ .../Project/ICSharpCode.Build.Tasks.csproj | 15 +- .../Project/KnownFrameworkAssemblies.cs | 182 ++++++++++++++++++ .../SharpDevelop.TargetingPack.targets | 19 ++ .../Project/ICSharpCode.SharpDevelop.csproj | 3 + .../ReferenceDialog/GacReferencePanel.cs | 160 +-------------- .../Project/MSBuildEngine/MSBuildEngine.cs | 14 +- .../Project/Src/Services/File/RecentOpen.cs | 61 ++---- 8 files changed, 304 insertions(+), 217 deletions(-) create mode 100644 src/Libraries/ICSharpCode.Build.Tasks/Project/CopyLocalWorkaround.cs create mode 100644 src/Libraries/ICSharpCode.Build.Tasks/Project/KnownFrameworkAssemblies.cs create mode 100644 src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.TargetingPack.targets diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/CopyLocalWorkaround.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/CopyLocalWorkaround.cs new file mode 100644 index 0000000000..06d421de2b --- /dev/null +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/CopyLocalWorkaround.cs @@ -0,0 +1,67 @@ +// +// +// +// +// $Revision$ +// + +using System; +using System.Collections.Generic; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace ICSharpCode.Build.Tasks +{ + /// + /// When compiling an AnyCPU project targeting .NET 4 without having the SDK/targeting pack installed, + /// MSBuild incorrectly assumes "Copy local" for a number of assemblies. + /// + public class CopyLocalWorkaround : Task + { + public ITaskItem[] Assemblies { get; set; } + + [Output] + public ITaskItem[] OutputAssemblies { get; set; } + + + public ITaskItem[] AssemblyFiles { get; set; } + + [Output] + public ITaskItem[] OutputAssemblyFiles { get; set; } + + public override bool Execute() + { + // mark known assemblies as copy local=false + List outputAssemblies = new List(); + foreach (ITaskItem item in this.Assemblies) { + if (string.IsNullOrEmpty(item.GetMetadata("Private"))) { + string assemblyName = item.ItemSpec; + foreach (string knownAssembly in KnownFrameworkAssemblies.FullAssemblyNames) { + if (knownAssembly.StartsWith(assemblyName, StringComparison.OrdinalIgnoreCase)) { + if (assemblyName.IndexOf(',') >= 0 || knownAssembly.IndexOf(',') == assemblyName.Length) { + // either matching full name, or matching short name + item.SetMetadata("Private", "False"); + outputAssemblies.Add(item); + break; + } + } + } + } + } + this.OutputAssemblies = outputAssemblies.ToArray(); + + // mark mscorlib as copy local=false + List outputAssemblyFiles = new List(); + foreach (ITaskItem item in this.AssemblyFiles) { + if (string.IsNullOrEmpty(item.GetMetadata("Private"))) { + if (item.ItemSpec.EndsWith("\\mscorlib.dll", StringComparison.OrdinalIgnoreCase)) { + item.SetMetadata("Private", "False"); + outputAssemblyFiles.Add(item); + } + } + } + this.OutputAssemblyFiles = outputAssemblyFiles.ToArray(); + return true; + } + } +} diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj index bcc8261018..9731526772 100644 --- a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj @@ -48,33 +48,38 @@ + - Always + PreserveNewest - Always + PreserveNewest + GlobalAssemblyInfo.cs - Always + PreserveNewest PreserveNewest + + PreserveNewest + - Always + PreserveNewest - Always + PreserveNewest diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/KnownFrameworkAssemblies.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/KnownFrameworkAssemblies.cs new file mode 100644 index 0000000000..f20162498b --- /dev/null +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/KnownFrameworkAssemblies.cs @@ -0,0 +1,182 @@ +// +// +// +// +// $Revision$ +// + +using System; +using System.Collections.Generic; +using System.IO; + +namespace ICSharpCode.Build.Tasks +{ + /// + /// Contains a list of .NET assemblies. + /// + static class KnownFrameworkAssemblies + { + // This table was generated using the code in SharpDevelop\src\Main\Base\Project\Src\Gui\Dialogs\ReferenceDialog\GacReferencePanel.cs + readonly static Dictionary fullAssemblyNameToRequiredFrameworkVersionDictionary = new Dictionary { + { "PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "System.Printing, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "Microsoft.Build.Conversion.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "Microsoft.Build.Framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "Microsoft.VisualC.STLCLR, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "PresentationBuildTasks, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationCFFRasterizer, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationFramework.Classic, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationFramework.Royale, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "PresentationUI, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "ReachFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "Sentinel.v3.5Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "System.AddIn, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.AddIn.Contract, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Data.Entity.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Data.Services.Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Data.Services.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.DirectoryServices.AccountManagement, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, + { "System.IdentityModel.Selectors, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, + { "System.IO.Log, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.0" }, + { "System.Management.Instrumentation, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Net, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, + { "System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, + { "System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, + { "System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Speech, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Web.DynamicData.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Web.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Web.Entity.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Windows.Presentation, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "System.Workflow.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "System.Workflow.ComponentModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, + { "System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, + { "UIAutomationClient, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "UIAutomationClientsideProviders, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "UIAutomationProvider, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "UIAutomationTypes, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + { "WindowsFormsIntegration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, + + // 4.0 Table. Manually modified to exclude assemblies from previous .NET versions. + { "CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Printing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "IEExecRemote, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "IEHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "IIEHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.Build.Conversion.v3.5, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.Build.Engine, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.Build.Tasks.v3.5, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.Build.Utilities.v3.5, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.JScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "PresentationBuildTasks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "PresentationFramework.Aero, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "PresentationFramework.Classic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "PresentationFramework.Luna, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "PresentationFramework.Royale, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "ReachFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.AddIn, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Configuration.Install, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Data.SqlXml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.IO.Log, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Management.Instrumentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Web.DynamicData.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Web.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, + { "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Windows.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Workflow.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Workflow.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, + { "UIAutomationClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "UIAutomationClientsideProviders, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "UIAutomationProvider, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "UIAutomationTypes, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + { "WindowsFormsIntegration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, + }; + + public static IEnumerable FullAssemblyNames { + get { return fullAssemblyNameToRequiredFrameworkVersionDictionary.Keys; } + } + + public static bool TryGetRequiredFrameworkVersion(string fullAssemblyName, out string version) + { + return fullAssemblyNameToRequiredFrameworkVersionDictionary.TryGetValue(fullAssemblyName, out version); + } + } +} diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.TargetingPack.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.TargetingPack.targets new file mode 100644 index 0000000000..3f3d0a4d91 --- /dev/null +++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.TargetingPack.targets @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 3a1bd60714..51581ee030 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -68,6 +68,9 @@ + + Src\Gui\Dialogs\ReferenceDialog\KnownFrameworkAssemblies.cs + Src\Project\MSBuildEngine\BuildJob.cs diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs index 078076e11b..fa1638fcde 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Threading; using System.Windows.Forms; +using ICSharpCode.Build.Tasks; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Project; @@ -112,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Gui ReferenceProjectItem rpi = new ReferenceProjectItem(selectDialog.ConfigureProject, include); string requiredFrameworkVersion; if (chooseSpecificVersionCheckBox.Checked) { - if (fullAssemblyNameToRequiredFrameworkVersionDictionary.TryGetValue(item.Tag.ToString(), out requiredFrameworkVersion)) { + if (KnownFrameworkAssemblies.TryGetRequiredFrameworkVersion(item.Tag.ToString(), out requiredFrameworkVersion)) { rpi.SetMetadata("RequiredTargetFramework", requiredFrameworkVersion); } } else { @@ -125,7 +126,7 @@ namespace ICSharpCode.SharpDevelop.Gui } } } - if (fullAssemblyNameToRequiredFrameworkVersionDictionary.TryGetValue(lowestVersion.Tag.ToString(), out requiredFrameworkVersion)) { + if (KnownFrameworkAssemblies.TryGetRequiredFrameworkVersion(lowestVersion.Tag.ToString(), out requiredFrameworkVersion)) { rpi.SetMetadata("RequiredTargetFramework", requiredFrameworkVersion); } } @@ -227,159 +228,6 @@ namespace ICSharpCode.SharpDevelop.Gui }); } - readonly static Dictionary fullAssemblyNameToRequiredFrameworkVersionDictionary = new Dictionary { - { "PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "System.Printing, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "Microsoft.Build.Conversion.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "Microsoft.Build.Framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "Microsoft.VisualC.STLCLR, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "PresentationBuildTasks, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationCFFRasterizer, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationFramework.Classic, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationFramework.Royale, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "PresentationUI, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "ReachFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "Sentinel.v3.5Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "System.AddIn, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.AddIn.Contract, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Data.Entity.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Data.Services.Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Data.Services.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.DirectoryServices.AccountManagement, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, - { "System.IdentityModel.Selectors, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, - { "System.IO.Log, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.0" }, - { "System.Management.Instrumentation, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Net, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "3.5" }, - { "System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, - { "System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.0" }, - { "System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Speech, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Web.DynamicData.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Web.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Web.Entity.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Windows.Presentation, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "System.Workflow.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "System.Workflow.ComponentModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.5" }, - { "System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "3.5" }, - { "UIAutomationClient, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "UIAutomationClientsideProviders, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "UIAutomationProvider, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "UIAutomationTypes, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - { "WindowsFormsIntegration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "3.0" }, - - // 4.0 Table. Manually modified to exclude assemblies from previous .NET versions. - { "CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Printing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "IEExecRemote, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "IEHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "IIEHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.Build.Conversion.v3.5, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.Build.Engine, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.Build.Tasks.v3.5, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.Build.Utilities.v3.5, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.JScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "PresentationBuildTasks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "PresentationFramework.Aero, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "PresentationFramework.Classic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "PresentationFramework.Luna, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "PresentationFramework.Royale, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "ReachFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.AddIn, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Configuration.Install, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Data.SqlXml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.IO.Log, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Management.Instrumentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Web.DynamicData.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Web.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "4.0" }, - { "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Windows.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Workflow.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Workflow.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "4.0" }, - { "UIAutomationClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "UIAutomationClientsideProviders, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "UIAutomationProvider, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "UIAutomationTypes, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - { "WindowsFormsIntegration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "4.0" }, - }; - #if DEBUG /// /// run this method with a .net 3.5 and .net 4.0 project to generate the table above. @@ -431,7 +279,7 @@ namespace ICSharpCode.SharpDevelop.Gui protected virtual IList GetCacheContent() { List list = GacInterop.GetAssemblyList(); - list.RemoveAll(name => name.ShortName.ToLowerInvariant().EndsWith(".resources")); + list.RemoveAll(name => name.ShortName.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)); return list; } } diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs index f8ef525e85..5b6f4146ab 100755 --- a/src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs @@ -7,21 +7,14 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; using System.Text; -using System.Text.RegularExpressions; -using System.Threading; using System.Xml; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.BuildWorker; -using ICSharpCode.SharpDevelop.Gui; -using Microsoft.Build.Construction; -using Microsoft.Build.Execution; using Microsoft.Build.Framework; -using MSBuild = Microsoft.Build.Evaluation; namespace ICSharpCode.SharpDevelop.Project { @@ -114,7 +107,10 @@ namespace ICSharpCode.SharpDevelop.Project throw new ArgumentNullException("additionalTargetFiles"); MSBuildEngine engine = new MSBuildEngine(project, options, feedbackSink); - engine.additionalTargetFiles = additionalTargetFiles; + engine.additionalTargetFiles = additionalTargetFiles.ToList(); + if (project.MinimumSolutionVersion >= Solution.SolutionVersionVS2010) { + engine.additionalTargetFiles.Add(Path.Combine(Path.GetDirectoryName(typeof(MSBuildEngine).Assembly.Location), "SharpDevelop.TargetingPack.targets")); + } engine.serviceContainer = serviceContainer; engine.StartBuild(); } @@ -123,7 +119,7 @@ namespace ICSharpCode.SharpDevelop.Project readonly int projectMinimumSolutionVersion; ProjectBuildOptions options; IBuildFeedbackSink feedbackSink; - IEnumerable additionalTargetFiles; + List additionalTargetFiles; ThreadSafeServiceContainer serviceContainer; private MSBuildEngine(IProject project, ProjectBuildOptions options, IBuildFeedbackSink feedbackSink) diff --git a/src/Main/Base/Project/Src/Services/File/RecentOpen.cs b/src/Main/Base/Project/Src/Services/File/RecentOpen.cs index fc2adc9dc4..2d420a1d15 100644 --- a/src/Main/Base/Project/Src/Services/File/RecentOpen.cs +++ b/src/Main/Base/Project/Src/Services/File/RecentOpen.cs @@ -7,15 +7,17 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; - +using System.Linq; +using System.Windows.Shell; using ICSharpCode.Core; namespace ICSharpCode.SharpDevelop { /// /// This class handles the recent open files and the recent open project files of SharpDevelop - /// it checks, if the files exists at every creation, and if not it doesn't list them in the + /// it checks, if the files exists at every creation, and if not it doesn't list them in the /// recent files, and they'll not be saved during the next option save. /// public sealed class RecentOpen @@ -26,62 +28,35 @@ namespace ICSharpCode.SharpDevelop /// int MAX_LENGTH = 10; - List lastfile = new List(); - List lastproject = new List(); - - public event EventHandler RecentFileChanged; - public event EventHandler RecentProjectChanged; + readonly ObservableCollection lastfile = new ObservableCollection(); + readonly ObservableCollection lastproject = new ObservableCollection(); - public List RecentFile { + public IList RecentFile { get { - System.Diagnostics.Debug.Assert(lastfile != null, "RecentOpen : set string[] LastFile (value == null)"); return lastfile; } } - public List RecentProject { + public IList RecentProject { get { - System.Diagnostics.Debug.Assert(lastproject != null, "RecentOpen : set string[] LastProject (value == null)"); return lastproject; } } - void OnRecentFileChange() - { - if (RecentFileChanged != null) { - RecentFileChanged(this, null); - } - } - - void OnRecentProjectChange() - { - if (RecentProjectChanged != null) { - RecentProjectChanged(this, null); - } - } - public RecentOpen() { } public RecentOpen(Properties p) { + // don't check whether files exist because that might be slow (e.g. if file is on network + // drive that's unavailable) if (p.Contains("Files")) { - string[] files = p["Files"].Split(','); - foreach (string file in files) { - if (File.Exists(file)) { - lastfile.Add(file); - } - } + lastfile.AddRange(p["Files"].Split(',')); } if (p.Contains("Projects")) { - string[] projects = p["Projects"].Split(','); - foreach (string file in projects) { - if (File.Exists(file)) { - lastproject.Add(file); - } - } + lastproject.AddRange(p["Projects"].Split(',')); } } @@ -102,22 +77,16 @@ namespace ICSharpCode.SharpDevelop } else { lastfile.Add(name); } - - OnRecentFileChange(); } public void ClearRecentFiles() { lastfile.Clear(); - - OnRecentFileChange(); } public void ClearRecentProjects() { lastproject.Clear(); - - OnRecentProjectChange(); } public void AddLastProject(string name) @@ -135,9 +104,9 @@ namespace ICSharpCode.SharpDevelop if (lastproject.Count > 0) { lastproject.Insert(0, name); } else { - lastproject.Add(name); + lastproject.Add(name); } - OnRecentProjectChange(); + JumpList.AddToRecentCategory(name); } public static RecentOpen FromXmlElement(Properties properties) @@ -159,7 +128,6 @@ namespace ICSharpCode.SharpDevelop string file = lastfile[i].ToString(); if (e.FileName == file) { lastfile.RemoveAt(i); - OnRecentFileChange(); break; } } @@ -172,7 +140,6 @@ namespace ICSharpCode.SharpDevelop if (e.SourceFile == file) { lastfile.RemoveAt(i); lastfile.Insert(i, e.TargetFile); - OnRecentFileChange(); break; } }