はい、パート 1 に進みます。
パート2については不明です。
VS2008 が折りたたまれた状態でファイルを自動的に開くようにするには、各ドキュメントが開いたときに「Edit.CollapsetoDefinition」を実行するアドインを作成する必要があります。
これはそれほどトリッキーではありません - 難しい部分は、ドキュメントが実際に開かれてから数ミリ秒後にコードを実行する必要があるように思われるため、それを行うには threed プールを使用する必要があります。
- VS2008 用のアドイン プロジェクトを作成します。
- このコード (以下を参照) を Connect クラスの OnConnection メソッドの最後に追加します。
switch (connectMode)
{
case ext_ConnectMode.ext_cm_UISetup:
case ext_ConnectMode.ext_cm_Startup:
//Do nothing OnStartup will be called once IDE is initialised.
break;
case ext_ConnectMode.ext_cm_AfterStartup:
//The addin was started post startup so we need to call its initialisation manually
InitialiseHandlers();
break;
}
- このメソッドを Connect クラスに追加します
private void InitialiseHandlers()
{
this._openHandler = new OnOpenHandler(_applicationObject);
}
- Connect クラスの OnStartupComplete メソッドに InitialiseHandlers() への呼び出しを追加します。
public void OnStartupComplete(ref Array custom)
{
InitialiseHandlers();
}
- このクラスをプロジェクトに追加します。
using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE80;
using EnvDTE;
using System.Threading;
namespace Collapser
{
internal class OnOpenHandler
{
DTE2 _application = null;
EnvDTE.Events events = null;
EnvDTE.DocumentEvents docEvents = null;
internal OnOpenHandler(DTE2 application)
{
_application = application;
events = _application.Events;
docEvents = events.get_DocumentEvents(null);
docEvents.DocumentOpened +=new _dispDocumentEvents_DocumentOpenedEventHandler(OnOpenHandler_DocumentOpened);
}
void OnOpenHandler_DocumentOpened(EnvDTE.Document document)
{
if (_application.Debugger.CurrentMode != dbgDebugMode.dbgBreakMode)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Collapse));
}
}
private void Collapse(object o)
{
System.Threading.Thread.Sleep(150);
_application.ExecuteCommand("Edit.CollapsetoDefinitions", "");
}
}
}
これで、開いているすべてのファイルが完全に折りたたまれているはずです。