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