Skip to content

Commit 247a12c

Browse files
author
Greg Galloway
committed
enhancements to work with latest preview SSDT
enhancements to AssemblyResolve process
1 parent 689db92 commit 247a12c

20 files changed

Lines changed: 76 additions & 27 deletions

BidsHelperPackage.cs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,6 @@ Microsoft Analysis Services Projects (by Microsoft) v2.8.11 04a86fc2-dbd5-4222-8
262262
}
263263

264264

265-
266-
267-
268265
Log.Verbose(string.Format("Loading Plugin: {0}", sAddInTypeName));
269266

270267
BIDSHelperPluginBase feature;
@@ -664,7 +661,7 @@ System.Reflection.Assembly currentDomain_AssemblyResolve(object sender, ResolveE
664661
{
665662
if (_recursiveAssemblyResolveNameToSkip == args.Name)
666663
return null; //skip recursion
667-
System.Diagnostics.Debug.WriteLine("AssemblyResolve: " + args.Name);
664+
Log.Debug("AssemblyResolve: " + args.Name);
668665
DateTime dtStart = DateTime.Now;
669666
if (
670667
args.Name.StartsWith("Microsoft.AnalysisServices")
@@ -688,11 +685,23 @@ System.Reflection.Assembly currentDomain_AssemblyResolve(object sender, ResolveE
688685
if (System.IO.File.Exists(sPath))
689686
{
690687
var assembly = Assembly.LoadFile(sPath);
691-
System.Diagnostics.Debug.WriteLine("AssemblyResolveSuccess: " + args.Name + " to version " + assembly.GetName().Version.ToString() + " at " + sPath + " in " + DateTime.Now.Subtract(dtStart).TotalMilliseconds + "ms");
688+
Log.Debug("AssemblyResolveSuccess: " + args.Name + " to version " + assembly.GetName().Version.ToString() + " at " + sPath + " in " + DateTime.Now.Subtract(dtStart).TotalMilliseconds + "ms");
692689
return assembly;
693690
}
694691
}
695-
System.Diagnostics.Debug.WriteLine("AssemblyResolveFail: " + args.Name + " in " + DateTime.Now.Subtract(dtStart).TotalMilliseconds + "ms");
692+
if (SSISExtensionInstallPath != null)
693+
{
694+
foreach (string sPath in System.IO.Directory.GetFiles(SSISExtensionInstallPath, assemblyname.Name + ".dll", System.IO.SearchOption.AllDirectories))
695+
{
696+
var assembly = Assembly.Load(System.IO.File.ReadAllBytes(sPath));
697+
if (assembly.GetName().Version.Major == assemblyname.Version.Major) //some SSIS subfolders have multiple versions of the assembly... make sure we match the major version number... it appears there may be an assembly redirect in operation, but this is probably safer
698+
{
699+
Log.Debug("AssemblyResolveSuccessSSIS: " + args.Name + " to version " + assembly.GetName().Version.ToString() + " at " + sPath + " in " + DateTime.Now.Subtract(dtStart).TotalMilliseconds + "ms");
700+
return assembly;
701+
}
702+
}
703+
}
704+
Log.Debug("AssemblyResolveFail: " + args.Name + " in " + DateTime.Now.Subtract(dtStart).TotalMilliseconds + "ms");
696705
return null;
697706

698707
//Version originalVersion = (Version)assemblyname.Version.Clone();
@@ -812,12 +821,19 @@ public void OutputString(string text)
812821
int hr;
813822

814823
// Get the output window
815-
outputWindow = base.GetService(typeof(SVsOutputWindow)) as IVsOutputWindow;
824+
if (Microsoft.VisualStudio.Shell.ThreadHelper.CheckAccess())
825+
outputWindow = base.GetService(typeof(SVsOutputWindow)) as IVsOutputWindow;
826+
else
827+
{
828+
System.Threading.Tasks.Task<object> task = base.GetServiceAsync(typeof(SVsOutputWindow));
829+
task.Wait();
830+
outputWindow = task.Result as IVsOutputWindow;
831+
}
816832

817833
// The General pane is not created by default. We must force its creation
818834
//if (guidPane == Microsoft.VisualStudio.VSConstants.OutputWindowPaneGuid.GeneralPane_guid)
819835
//{
820-
hr = outputWindow.CreatePane(guidPane, "BIDS Helper", VISIBLE, DO_NOT_CLEAR_WITH_SOLUTION);
836+
hr = outputWindow.CreatePane(guidPane, "BIDS Helper", VISIBLE, DO_NOT_CLEAR_WITH_SOLUTION);
821837
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr);
822838
//}
823839

Core/Options/BIDSHelperOptionsVersionCheckPage.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,30 @@ private void BIDSHelperOptionsVersionCheckPage_Load(object sender, EventArgs e)
134134
(BIDSHelperPackage.SSISExtensionVersion == null ? "N/A" : BIDSHelperPackage.SSISExtensionVersion.ToString()),
135135
(BIDSHelperPackage.SSRSExtensionVersion == null ? "N/A" : BIDSHelperPackage.SSRSExtensionVersion.ToString()));
136136

137+
//release 2.3.0 expected: 2.8.11 SSAS extension or higher, version 2.5.6 SSRS extension or higher, and 2.1 SSIS extension or higher
138+
Version SSASExpectedVersion = new Version("2.8.11");
139+
Version SSRSExpectedVersion = new Version("2.5.6");
140+
Version SSISExpectedVersion = new Version("2.1");
141+
142+
string sUpgradeSSDTMessage = string.Empty;
143+
if (BIDSHelperPackage.SSASExtensionVersion != null && BIDSHelperPackage.SSASExtensionVersion < SSASExpectedVersion)
144+
{
145+
if (sUpgradeSSDTMessage != string.Empty) sUpgradeSSDTMessage += ", ";
146+
sUpgradeSSDTMessage += "SSAS to " + SSASExpectedVersion;
147+
}
148+
if (BIDSHelperPackage.SSRSExtensionVersion != null && BIDSHelperPackage.SSRSExtensionVersion < SSRSExpectedVersion)
149+
{
150+
if (sUpgradeSSDTMessage != string.Empty) sUpgradeSSDTMessage += ", ";
151+
sUpgradeSSDTMessage += "SSRS to " + SSRSExpectedVersion;
152+
}
153+
if (BIDSHelperPackage.SSISExtensionVersion != null && BIDSHelperPackage.SSISExtensionVersion < SSISExpectedVersion)
154+
{
155+
if (sUpgradeSSDTMessage != string.Empty) sUpgradeSSDTMessage += ", ";
156+
sUpgradeSSDTMessage += "SSIS to " + SSISExpectedVersion;
157+
}
158+
if (sUpgradeSSDTMessage != string.Empty)
159+
this.lblSqlVersion.Text += "\r\n" + "Please upgrade " + sUpgradeSSDTMessage;
160+
137161
// First check we have a valid instance, the add-in may be disabled.
138162
if (VersionCheckPlugin.Instance == null)
139163
{
Binary file not shown.
0 Bytes
Binary file not shown.
-216 Bytes
Binary file not shown.
-216 Bytes
Binary file not shown.
1 KB
Binary file not shown.
216 Bytes
Binary file not shown.
Binary file not shown.
216 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)