投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/5/19 13:23:26
> dte2 = System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE")
Marshal.GetActiveObject メソッドの代わりに、CreateObject 関数を使う手法もあります。

> クラス文字列が無効です (HRESULT からの例外: 0x800401F3 (CO_E_CLASSSTRING))
レジストリに HKEY_CLASSES_ROOT\VisualStudio.DTE のエントリがあるかどうかを
確認してみてください。それが無い環境の場合、呼び出しは失敗することになるでしょう。

なお、Visual Studio の ProgID は、
 VisualStudio.DTE … バージョン非依存のProgID
 VisualStudio.DTE.7 … VS.NET(2002)環境のProgID
 VisualStudio.DTE.7.1 … VS.NET2003環境のProgID
 VisualStudio.DTE.8.0 … VS2005環境のProgID
 VisualStudio.DTE.9.0 … VS2008環境のProgID
 VisualStudio.DTE.10.0 … VS2010環境のProgID
となっています。


> それとも2008 Express Editionでは無理なのでしょうか。
手元に無償版のみの環境が無いため、実際の状況は把握できていないのですが、
Visual Studio SDK 自体が「Standard Edition 以降が必要、Express Edition では不可」と
されていますから、恐らくは、VSX 関連の機能は利用できないであろうかと思います。

Visual Studio 2008 Express Edition
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=3254c868-bcb9-412c-95c6-d100c872ec60

Visual Studio 2008 Shell (Integrated Mode)
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=40646580-97fa-4698-b65f-620d4b4b1ed7

Visual Studio 2008 Shell (Isolated Mode)
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyId=021B3BEE-B2AD-42A8-854A-C5EAEF69E927

Visual Studio 2008 SDK
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=30402623-93ca-479a-867c-04dc45164f5b
http://msdn.microsoft.com/ja-jp/library/bb166441(VS.90).aspx

Visual Studio Extensibility (VSX) - Code Gallery
http://code.msdn.microsoft.com/vsx