diff --git a/.gitignore b/.gitignore index b4017c01..0f416480 100644 --- a/.gitignore +++ b/.gitignore @@ -23,11 +23,10 @@ /ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/bin /ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/obj -/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.IntegrationTests/bin/Debug -/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.IntegrationTests/bin/Release +/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.IntegrationTests/bin/ /ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.IntegrationTests/obj -/ide_plugins/vs/vs2015/SourcetrailPlugin/TestResults - +/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/bin +/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/obj /ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperInterfaces/bin /ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperInterfaces/obj /ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/bin @@ -35,6 +34,8 @@ /ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/bin /ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/obj +/ide_plugins/vs/vs2015/SourcetrailPlugin/TestResults + *.coatidb *.srctrldb *.srctrlbm diff --git a/ide_plugins/vs/sourcetrail_plugin_vs.vsix b/ide_plugins/vs/sourcetrail_plugin_vs.vsix index 2778e004..fcc13e10 100644 Binary files a/ide_plugins/vs/sourcetrail_plugin_vs.vsix and b/ide_plugins/vs/sourcetrail_plugin_vs.vsix differ diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.sln b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.sln index fb6c55d7..885d247c 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.sln +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin.sln @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VCProjectEngineWrapperVs201 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VCProjectEngineWrapperVs2012", "VCProjectEngineWrapper\VCProjectEngineWrapperVs2012.csproj", "{C5439B90-42E7-414D-8C3F-BDCABB0592E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourcetrailPluginUtility", "SourcetrailPluginUtility\SourcetrailPluginUtility.csproj", "{604B5751-AF34-4FF9-92C3-C85A6BCDF98E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -65,6 +67,10 @@ Global {C5439B90-42E7-414D-8C3F-BDCABB0592E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {C5439B90-42E7-414D-8C3F-BDCABB0592E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {C5439B90-42E7-414D-8C3F-BDCABB0592E2}.Release|Any CPU.Build.0 = Release|Any CPU + {604B5751-AF34-4FF9-92C3-C85A6BCDF98E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {604B5751-AF34-4FF9-92C3-C85A6BCDF98E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {604B5751-AF34-4FF9-92C3-C85A6BCDF98E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {604B5751-AF34-4FF9-92C3-C85A6BCDF98E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/ILogger.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/ILogger.cs deleted file mode 100644 index 04169c65..00000000 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/ILogger.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace CoatiSoftware.SourcetrailPlugin.Logging -{ - public interface ILogger - { - void LogMessage(LogMessage message); - } -} diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/SourcetrailPlugin.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/SourcetrailPlugin.csproj index 0f3668f5..37c28f66 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/SourcetrailPlugin.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/SourcetrailPlugin.csproj @@ -138,13 +138,6 @@ - - - - - - - @@ -224,12 +217,12 @@ WindowMessage.cs - - - - Designer - - + + + + Designer + + @@ -252,6 +245,10 @@ + + {604b5751-af34-4ff9-92c3-c85a6bcdf98e} + SourcetrailPluginUtility + {8188d64d-e880-490c-b267-b493a2171be3} VCProjectEngineWrapperFactories diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Key.snk b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Key.snk new file mode 100644 index 00000000..6cb882d7 Binary files /dev/null and b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Key.snk differ diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/FileLogger.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/FileLogger.cs similarity index 97% rename from ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/FileLogger.cs rename to ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/FileLogger.cs index 79db0d91..ee6f1909 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/FileLogger.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/FileLogger.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace CoatiSoftware.SourcetrailPlugin.Logging { - class FileLogger : ILogger + public class FileLogger : ILogger { private static string _directory = ""; private static string _fileNamePrefix = "Log_SourcetrailPlugin_"; diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/ILogger.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/ILogger.cs new file mode 100644 index 00000000..f6aabe38 --- /dev/null +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/ILogger.cs @@ -0,0 +1,7 @@ +namespace CoatiSoftware.SourcetrailPlugin.Logging +{ + public interface ILogger + { + void LogMessage(LogMessage message); + } +} diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/LogManager.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/LogManager.cs similarity index 96% rename from ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/LogManager.cs rename to ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/LogManager.cs index ca2f5c77..538afdd0 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/LogManager.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/LogManager.cs @@ -1,8 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CoatiSoftware.SourcetrailPlugin.Logging { diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/LogMessage.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/LogMessage.cs similarity index 93% rename from ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/LogMessage.cs rename to ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/LogMessage.cs index 9612716b..0e087636 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/LogMessage.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/LogMessage.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CoatiSoftware.SourcetrailPlugin.Logging { diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/Logging.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/Logging.cs similarity index 87% rename from ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/Logging.cs rename to ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/Logging.cs index 2e2a45d1..b9fed619 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/Logging.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/Logging.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; namespace CoatiSoftware.SourcetrailPlugin.Logging { diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/Obfuscation/NameObfuscator.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/Obfuscation/NameObfuscator.cs similarity index 99% rename from ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/Obfuscation/NameObfuscator.cs rename to ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/Obfuscation/NameObfuscator.cs index 35ad1804..bbda6d83 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/Obfuscation/NameObfuscator.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/Obfuscation/NameObfuscator.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace CoatiSoftware.SourcetrailPlugin.Logging.Obfuscation { - class NameObfuscator + public class NameObfuscator { private static NameObfuscator _instance = null; diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/VSOutputLogger.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/VSOutputLogger.cs similarity index 92% rename from ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/VSOutputLogger.cs rename to ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/VSOutputLogger.cs index 6ba79ea4..b347ca52 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPlugin/Logging/VSOutputLogger.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Logging/VSOutputLogger.cs @@ -1,13 +1,10 @@ using EnvDTE; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.Shell.Interop; using System; using System.Diagnostics; namespace CoatiSoftware.SourcetrailPlugin.Logging { - class VSOutputLogger : ILogger + public class VSOutputLogger : ILogger { private EnvDTE.DTE _dte = null; private OutputWindowPane _pane = null; diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Properties/AssemblyInfo.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..73867b12 --- /dev/null +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/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("SourcetrailPluginUtility")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Coati Software")] +[assembly: AssemblyProduct("SourcetrailPluginUtility")] +[assembly: AssemblyCopyright("Copyright © Coati Software 2017")] +[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("604b5751-af34-4ff9-92c3-c85a6bcdf98e")] + +// 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.*")] +//[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/SourcetrailPluginUtility.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/SourcetrailPluginUtility.csproj new file mode 100644 index 00000000..36472565 --- /dev/null +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailPluginUtility/SourcetrailPluginUtility.csproj @@ -0,0 +1,70 @@ + + + + + Debug + AnyCPU + {604B5751-AF34-4FF9-92C3-C85A6BCDF98E} + Library + Properties + CoatiSoftware.SourcetrailPlugin + SourcetrailPluginUtility + v4.6.1 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + + + Key.snk + + + + False + True + + + False + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCConfigurationWrapper.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCConfigurationWrapper.cs index b8a01f21..34694a35 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCConfigurationWrapper.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCConfigurationWrapper.cs @@ -1,4 +1,5 @@ -using Microsoft.VisualStudio.VCProjectEngine; +using CoatiSoftware.SourcetrailPlugin.Logging; +using Microsoft.VisualStudio.VCProjectEngine; using System; using System.Collections; @@ -74,7 +75,7 @@ namespace VCProjectEngineWrapper } catch (Exception e) { -// Logging.Logging.LogError("Failed to retreive compiler tool: " + e.Message); + Logging.LogError("Failed to retreive compiler tool: " + e.Message); } return new #if (VS2012) diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2012.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2012.csproj index 26c1c59f..a932157c 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2012.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2012.csproj @@ -9,8 +9,9 @@ Properties VCProjectEngineWrapper VCProjectEngineWrapperVs2012 - v4.5.2 + v4.6.1 512 + true @@ -62,6 +63,10 @@ + + {604b5751-af34-4ff9-92c3-c85a6bcdf98e} + SourcetrailPluginUtility + {F592DB46-0C77-470B-AAF8-80C51F44380E} VCProjectEngineWrapperInterfaces diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2013.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2013.csproj index 91b12ae1..369ddcac 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2013.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2013.csproj @@ -9,8 +9,9 @@ Properties VCProjectEngineWrapper VCProjectEngineWrapperVs2013 - v4.5.2 + v4.6.1 512 + true @@ -65,6 +66,10 @@ + + {604b5751-af34-4ff9-92c3-c85a6bcdf98e} + SourcetrailPluginUtility + {F592DB46-0C77-470B-AAF8-80C51F44380E} VCProjectEngineWrapperInterfaces diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2015.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2015.csproj index caeff4c3..90dea52b 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2015.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2015.csproj @@ -9,8 +9,9 @@ Properties VCProjectEngineWrapper VCProjectEngineWrapperVs2015 - v4.5.2 + v4.6.1 512 + true @@ -65,6 +66,10 @@ + + {604b5751-af34-4ff9-92c3-c85a6bcdf98e} + SourcetrailPluginUtility + {F592DB46-0C77-470B-AAF8-80C51F44380E} VCProjectEngineWrapperInterfaces diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2017.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2017.csproj index 376c60cf..099b8d46 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2017.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectEngineWrapperVs2017.csproj @@ -9,8 +9,9 @@ Properties VCProjectEngineWrapper VCProjectEngineWrapperVs2017 - v4.5.2 + v4.6.1 512 + true @@ -65,6 +66,10 @@ + + {604b5751-af34-4ff9-92c3-c85a6bcdf98e} + SourcetrailPluginUtility + {f592db46-0c77-470b-aaf8-80c51f44380e} VCProjectEngineWrapperInterfaces diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectWrapper.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectWrapper.cs index 7192e134..ab430615 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectWrapper.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapper/VCProjectWrapper.cs @@ -1,4 +1,5 @@ -using Microsoft.VisualStudio.VCProjectEngine; +using CoatiSoftware.SourcetrailPlugin.Logging; +using Microsoft.VisualStudio.VCProjectEngine; using System; using System.Collections; @@ -72,9 +73,9 @@ namespace VCProjectEngineWrapper } catch (Exception e) { -// Logging.Logging.LogError("Failed to retreive project configuration: " + e.Message); + Logging.LogError("Failed to retreive project configuration: " + e.Message); } -// Logging.Logging.LogError("Failed to find project config matching with \"" + configurationName + "\""); + Logging.LogError("Failed to find project config matching with \"" + configurationName + "\""); return new #if (VS2012) diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCFileWrapperFactory.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCFileWrapperFactory.cs index bff44bd3..5e2e9369 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCFileWrapperFactory.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCFileWrapperFactory.cs @@ -1,24 +1,88 @@ -namespace VCProjectEngineWrapper +using CoatiSoftware.SourcetrailPlugin.Logging; +using System; +using System.Collections.Generic; + +namespace VCProjectEngineWrapper { public static class VCFileWrapperFactory { + private interface IFactoryModule + { + IVCFileWrapper Create(object wrapped); + } + + private class FactoryModule2017 : IFactoryModule + { + public IVCFileWrapper Create(object wrapped) + { + return new VCFileWrapperVs2017(wrapped); + } + } + + private class FactoryModule2015 : IFactoryModule + { + public IVCFileWrapper Create(object wrapped) + { + return new VCFileWrapperVs2015(wrapped); + } + } + + private class FactoryModule2013 : IFactoryModule + { + public IVCFileWrapper Create(object wrapped) + { + return new VCFileWrapperVs2013(wrapped); + } + } + + private class FactoryModule2012 : IFactoryModule + { + public IVCFileWrapper Create(object wrapped) + { + return new VCFileWrapperVs2012(wrapped); + } + } + + private static Queue modules = null; + public static IVCFileWrapper create(object wrapped) { + if (modules == null) + { + modules = new Queue(); + + // One of these modules will be working for each version of Visual Studio. + modules.Enqueue(new FactoryModule2017()); + modules.Enqueue(new FactoryModule2015()); + modules.Enqueue(new FactoryModule2013()); + modules.Enqueue(new FactoryModule2012()); + } + IVCFileWrapper wrapper = null; + int testedModuleCount = 0; - wrapper = new VCFileWrapperVs2017(wrapped); + while (wrapper == null && testedModuleCount < modules.Count) + { + try + { + wrapper = modules.Peek().Create(wrapped); + } + catch (Exception e) + { + wrapper = null; + } - if (wrapper == null || !wrapper.isValid()) - { - wrapper = new VCFileWrapperVs2015(wrapped); - } - if (wrapper == null || !wrapper.isValid()) - { - wrapper = new VCFileWrapperVs2013(wrapped); - } - if (wrapper == null || !wrapper.isValid()) - { - wrapper = new VCFileWrapperVs2012(wrapped); + testedModuleCount++; + + if (wrapper == null || !wrapper.isValid()) + { + // Moving the failing module to the end of the queue. + // This causes the working module to finall end up in front. + IFactoryModule failedModule = modules.Dequeue(); + Logging.LogInfo("Discarcing " + failedModule.GetType().Name + " while creating file wrapper."); + modules.Enqueue(failedModule); + wrapper = null; + } } return wrapper; diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectEngineWrapperFactories.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectEngineWrapperFactories.csproj index 64e74ae6..f10e819f 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectEngineWrapperFactories.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectEngineWrapperFactories.csproj @@ -9,8 +9,9 @@ Properties VCProjectEngineWrapper VCProjectEngineWrapperFactory - v4.5.2 + v4.6.1 512 + true @@ -54,6 +55,10 @@ + + {604b5751-af34-4ff9-92c3-c85a6bcdf98e} + SourcetrailPluginUtility + {f592db46-0c77-470b-aaf8-80c51f44380e} VCProjectEngineWrapperInterfaces diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectWrapperFactory.cs b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectWrapperFactory.cs index 5da3af96..1a398e59 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectWrapperFactory.cs +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperFactories/VCProjectWrapperFactory.cs @@ -1,60 +1,89 @@ -using System; +using CoatiSoftware.SourcetrailPlugin.Logging; +using System; +using System.Collections.Generic; namespace VCProjectEngineWrapper { public static class VCProjectWrapperFactory { + private interface IFactoryModule + { + IVCProjectWrapper Create(object wrapped); + } + + private class FactoryModule2017 : IFactoryModule + { + public IVCProjectWrapper Create(object wrapped) + { + return new VCProjectWrapperVs2017(wrapped); + } + } + + private class FactoryModule2015 : IFactoryModule + { + public IVCProjectWrapper Create(object wrapped) + { + return new VCProjectWrapperVs2015(wrapped); + } + } + + private class FactoryModule2013 : IFactoryModule + { + public IVCProjectWrapper Create(object wrapped) + { + return new VCProjectWrapperVs2013(wrapped); + } + } + + private class FactoryModule2012 : IFactoryModule + { + public IVCProjectWrapper Create(object wrapped) + { + return new VCProjectWrapperVs2012(wrapped); + } + } + + private static Queue modules = null; + public static IVCProjectWrapper create(object wrapped) { + if (modules == null) + { + modules = new Queue(); + + // One of these modules will be working for each version of Visual Studio. + modules.Enqueue(new FactoryModule2017()); + modules.Enqueue(new FactoryModule2015()); + modules.Enqueue(new FactoryModule2013()); + modules.Enqueue(new FactoryModule2012()); + } + IVCProjectWrapper wrapper = null; + int testedModuleCount = 0; - try + while (wrapper == null && testedModuleCount < modules.Count) { + try + { + wrapper = modules.Peek().Create(wrapped); + } + catch (Exception e) + { + wrapper = null; + } + + testedModuleCount++; + if (wrapper == null || !wrapper.isValid()) { - wrapper = new VCProjectWrapperVs2017(wrapped); + // Moving the failing module to the end of the queue. + // This causes the working module to finall end up in front. + IFactoryModule failedModule = modules.Dequeue(); + Logging.LogInfo("Discarcing " + failedModule.GetType().Name + " while creating project wrapper."); + modules.Enqueue(failedModule); + wrapper = null; } } - catch (Exception e) - { - wrapper = null; - } - - try - { - if (wrapper == null || !wrapper.isValid()) - { - wrapper = new VCProjectWrapperVs2015(wrapped); - } - } - catch (Exception e) - { - wrapper = null; - } - - try - { - if (wrapper == null || !wrapper.isValid()) - { - wrapper = new VCProjectWrapperVs2013(wrapped); - } - } - catch (Exception e) - { - wrapper = null; - } - - try - { - if (wrapper == null || !wrapper.isValid()) - { - wrapper = new VCProjectWrapperVs2012(wrapped); - } - } - catch (Exception e) - { - wrapper = null; - } return wrapper; } diff --git a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperInterfaces/VCProjectEngineWrapperInterfaces.csproj b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperInterfaces/VCProjectEngineWrapperInterfaces.csproj index 38e7dc22..d912824e 100644 --- a/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperInterfaces/VCProjectEngineWrapperInterfaces.csproj +++ b/ide_plugins/vs/vs2015/SourcetrailPlugin/VCProjectEngineWrapperInterfaces/VCProjectEngineWrapperInterfaces.csproj @@ -9,8 +9,9 @@ Properties VCProjectEngineWrapper VCProjectWrapper - v4.5.2 + v4.6.1 512 + true