11

私の質問によると、すでにテスト済みで正常に動作するテンプレートに基づいて新しいプロジェクトを作成したいのですが、C#コード(mvc3プロジェクト)で作成しようとすると2つの問題が発生します。

  1. これは、私がこの例EnvDTE80, EnvDTE90 and EnvDTE100実行しようとしたため の違いですが、オブジェクトがそれを処理しないために機能せず、同じ動作をしません。EnvDTE100Solution4Solution2Solution4
  2. デフォルトのパスを使用せずにプロジェクトを作成するにはどうすればよいですか?ただし、必要な特定のフォルダー

アップデート

これが私が呼ばれるdllを使用した場合に機能するコードですEnvDTE80

  System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0");
  Object obj = System.Activator.CreateInstance(type, true);
  EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)obj;
  Solution2 _solution = (Solution2)dte.Solution;
  string projectTemplatePath = @"C:\Documents and Settings\jmachado\Escritorio";
  projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from '<drive>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\Language.'

しかし、私が使用した場合EnvDTE100

  System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
  Object obj = System.Activator.CreateInstance(type, true);
  EnvDTE100.DTE2 dte = (EnvDTE100.DTE2)obj;
  Solution4 _solution = (Solution4)dte.Solution;
  string projectTemplatePath = @"C:\Documents and Settings\jmachado\Escritorio";
  projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from '<drive>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\Language.'

そして、DTE2がの名前空間に存在しないと言うEnvDTE100

4

1 に答える 1

7

EnvDTE80、EnvDTE90、および EnvDTE100 は、VS 8.0 (2005)、9.0 (2008)、および 10.0 (2010) 用の DTE タイプ ライブラリです。

VS2010 の時点で、DTE ルート オブジェクト インターフェイスは 2 つしかありません。DTE2 が最新です。したがって、VS 2010 の DTE オブジェクトを取得するには、次のようにします。

System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE80.DTE2 dte = (EnvDTE100.DTE2)obj;

ProgID は「10.0」ですが、変数の型はEnvDTE80.DTE2.

残りはそこから機能するはずです。Solution4また、必要に応じていつでもキャストできることにも注意してくださいSolution2 (ただし、GetProjectTemplateで直接利用できるはずですSolution4)。

于 2012-01-11T19:20:23.260 に答える