SOLID 3.5 への移行

SOLID 3.5 から使用する Visual Studio Shell が 2015 に変更になります。 これに伴い、拡張機能やビルドスクリプトに修正が必要になります。

新規インストールやアップデートの方法に変更はありません。インストール を参照してください。

既存のプロジェクトやソリューション

変更の必要はありません。

既存のソースコード

変更の必要はありません。

拡張機能

ユーザー独自の拡張機能を構築している場合、VSIXプロジェクトに以下の変更が必要になります。

  1. source.extension.vsixmanifest を編集し SOLID-IDE 2.0 をインストール対象に変更します。

source.extension.vsixmanifest
 <Installation>
-  <InstallationTarget Id="SOLID-IDE" Version="[1.0]" />
+  <InstallationTarget Id="SOLID-IDE" Version="[2.0]" />
 </Installation>

スクリプト

スクリプトを実行するには、以下の変更が必要になります。

  1. solid-os/tools/Scripting/IronPython/Modules/IDE/IDE.psm1 に以下の変更を追加します。

solid-os/tools/Scripting/IronPython/Modules/IDE/IDE.psm1
 [IDE.Managed.IDE]::Initialize()

+$baseKey = $null
+$subKey = $null
+try {
+    $baseKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32)
+    $subKey = $baseKey.OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{66704924-9C04-4EAA-B36C-2C03C95F9669}')
+    if ($null -ne $subKey) {
+        [IDE.Managed.IDE]::SetIDEInfo('PARTNER-IDE', '2.0', '.ptsln')
+    }
+} catch {
+} finally {
+    if ($null -ne $subKey) {
+        $subKey.Dispose()
+    }
+    if ($null -ne $baseKey) {
+        $baseKey.Dispose()
+    }
+}
+
 Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
     [IDE.Managed.IDE]::Close()
 }
  1. solid-os/tools/Scripting/IronPython/ide.py に以下の変更を追加します。

solid-os/tools/Scripting/IronPython/ide.py
 def initialize():
     if not IDE.Initialize() :
         return False
+
+    from Microsoft.Win32 import RegistryKey, RegistryHive, RegistryView
+
+    base_key = None
+    sub_key = None
+    try:
+        base_key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)
+        sub_key = base_key.OpenSubKey(r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{66704924-9C04-4EAA-B36C-2C03C95F9669}')
+        if sub_key is not None:
+            IDE.SetIDEInfo('PARTNER-IDE', '2.0', '.ptsln')
+    except:
+        pass
+    finally:
+        if sub_key is not None:
+            sub_key.Dispose()
+        if base_key is not None:
+            base_key.Dispose()
     return True