ドッキング可能なウィンドウ ペインを開く Visual Studio 2008 用の簡単なアドインを作成しました。
ここをクリックして、ソースとバイナリのインストーラーをダウンロードできます。
アドインの性質上、理想的には、ソースを編集する場所の隣にドッキングされたままになります。ただし、一部のインストールでは、ドッキングされたままにならないことがあります。VS を実行し、ペインをドッキングし、VS をシャットダウンし、VS を再起動してダンピングすると、ペインが再びフローティングします。一部のマシンでは、毎回再ドッキングする必要があります。
しかし、他のインストールでは、どこに置いても永遠にドッキングされたままになります。当初は、Vista と XP の違いかもしれないと思っていましたが、XP でも問題が解決しないという報告があります。
私が読んだこと (およびドッキングされたままになることもあるという事実) から、VS がドッキング状態を保存することになっているという印象を受けます。しかし、それはしていません。また、同じ VS インストール上の他のプラグインには、この問題はありません。ですから、状況を改善するために何かできることがあるはずです。
私のコードの唯一の関連部分はこれだと思います:
public class Connect : IDTExtensibility2
{
private static DTE2 _applicationObject;
private AddIn _addInInstance;
private static CodeModelEvents _codeModelEvents;
public static DTE2 VisualStudioApplication
{
get { return _applicationObject; }
}
public static CodeModelEvents CodeModelEvents
{
get { return _codeModelEvents; }
}
public static event EventHandler SourceChanged = delegate { };
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
}
public void OnStartupComplete(ref Array custom)
{
try
{
Events2 events = (Events2)_applicationObject.Events;
_codeModelEvents = events.get_CodeModelEvents(null);
object objTemp = null;
Windows2 toolWins = (Windows2)_applicationObject.Windows;
Window toolWin = toolWins.CreateToolWindow2(
_addInInstance, GetType().Assembly.Location, "Ora.OraPane", "Ora",
"{DC8A399C-D9B3-40f9-90E2-EAA16F0FBF94}", ref objTemp);
toolWin.Visible = true;
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message);
}
}
public void OnBeginShutdown(ref Array custom) { }
public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom) { }
public void OnAddInsUpdate(ref Array custom) { }
}
(MSDN のドキュメントでは、ウィンドウを OnConnection で作成する必要があることが示唆されていますが、そうするとウィンドウはほとんど表示されません。)