2011-07-26 9 views
2

私はVS2010ソリューションを作成し、スタンドアロンアプリケーション(アドインではありません)からプロジェクトを追加しようとしています。 VS2010のインスタンスを作成することはできますが、プロジェクトを正しく作成する方法を判断できません... EnvDTE80オブジェクトを使用してプロジェクトを作成する方法の例を見つけることができます。これは、プロジェクトファイルは以前の形式であり、アップグレードする必要があります。私はこれを持っている:ソリューションを作成し、「VisualStudio.DTE.10.0」を使用してプロジェクトを追加してください

EnvDTE80.DTE2 dte2; 
object obj; 
System.Type t; 
t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true); 
obj = System.Activator.CreateInstance(t, true); 
dte2 = (EnvDTE80.DTE2)obj; 

は私が探している「EnvDTE100.DTE2」のようなものと同等であるが、そこに取得する方法を知りません。

おかげで

+0

完全なソースコードを含む最終的な解決策はありますか? – Kiquenet

答えて

1

私は私がVS2010で作成したテンプレートからのソリューションとロード二つのプロジェクトを作成するアプリケーションを持って、私は似た何かをやっていると思います。

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

次に、あなたは(あなたのプロジェクトを作成するためにSOLNオブジェクトのメソッドを呼び出すことができます。それはすべてがまだでもVS2010で、ロードEnvDTE80を使用していますが、その後、我々は2010ソリューションを作成するためにそれを使用するようだという点で、あなたは正しいです私の場合はそのAddFromTemplate)。

4

DTEオブジェクトを経由する必要はありません。オブジェクトソリューション4への対処はこれとは異なります。

Type latestSolution = Type.GetTypeFromProgID("VisualStudio.10.0", true); 
EnvDTE100.Solution4 vsSolution = (EnvDTE100.Solution4)Activator.CreateInstance(latestSolution, true); 
関連する問題