提交 bddc993a 编写于 作者: J Jason Malinowski 提交者: Tanner Gooding

Allow running on newer Visual Studio 2017 versions

上级 cee39cf0
......@@ -10,7 +10,7 @@
<userSettings>
<Microsoft.VisualStudio.IntegrationTest.Utilities.Settings>
<setting name="VsProductVersion" serializeAs="String">
<value>15.0</value>
<value>15</value>
</setting>
<setting name="VsRootSuffix" serializeAs="String">
<value>RoslynDev</value>
......
......@@ -458,7 +458,6 @@ public static DTE TryLocateDteForProcess(Process process)
{
object dte = null;
var monikers = new IMoniker[1];
var vsProgId = VisualStudioInstanceFactory.VsProgId;
NativeMethods.GetRunningObjectTable(0, out var runningObjectTable);
runningObjectTable.EnumRunning(out var enumMoniker);
......@@ -484,16 +483,14 @@ public static DTE TryLocateDteForProcess(Process process)
moniker.GetDisplayName(bindContext, null, out var fullDisplayName);
// FullDisplayName will look something like: <ProgID>:<ProccessId>
if (!int.TryParse(fullDisplayName.Split(':').Last(), out var displayNameProcessId))
var displayNameParts = fullDisplayName.Split(':');
if (!int.TryParse(displayNameParts.Last(), out var displayNameProcessId))
{
continue;
}
var displayName = fullDisplayName.Substring(0, (fullDisplayName.Length - (displayNameProcessId.ToString().Length + 1)));
var fullProgId = vsProgId.StartsWith("!") ? vsProgId : $"!{vsProgId}";
if (displayName.Equals(fullProgId, StringComparison.OrdinalIgnoreCase) &&
(displayNameProcessId == process.Id))
if (displayNameParts[0].StartsWith("!VisualStudio.DTE", StringComparison.OrdinalIgnoreCase) &&
displayNameProcessId == process.Id)
{
runningObjectTable.GetObject(moniker, out dte);
}
......
......@@ -12,7 +12,7 @@ namespace Microsoft.VisualStudio.IntegrationTest.Utilities {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......@@ -25,7 +25,7 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("15.0")]
[global::System.Configuration.DefaultSettingValueAttribute("15")]
public string VsProductVersion {
get {
return ((string)(this["VsProductVersion"]));
......
......@@ -3,7 +3,7 @@
<Profiles />
<Settings>
<Setting Name="VsProductVersion" Type="System.String" Scope="User">
<Value Profile="(Default)">15.0</Value>
<Value Profile="(Default)">15</Value>
</Setting>
<Setting Name="VsRootSuffix" Type="System.String" Scope="User">
<Value Profile="(Default)">RoslynDev</Value>
......
......@@ -20,8 +20,6 @@ public sealed class VisualStudioInstanceFactory : IDisposable
{
public static readonly string VsProductVersion = Settings.Default.VsProductVersion;
public static readonly string VsProgId = $"VisualStudio.DTE.{VsProductVersion}";
public static readonly string VsLaunchArgs = $"{(string.IsNullOrWhiteSpace(Settings.Default.VsRootSuffix) ? "/log" : $"/rootsuffix {Settings.Default.VsRootSuffix}")} /log";
/// <summary>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册