簡體   English   中英

以編程方式創建Visual Studio項目

[英]Create a Visual Studio project programmatically

正如我的問題所說,我想基於一個模板創建一個新項目,該模板已經創建了一個經過測試並且可以正常工作的模板,但是當我嘗試使用C#代碼(在mvc3項目中)進行操作時,我遇到兩個問題。

  1. EnvDTE80, EnvDTE90 and EnvDTE100之間的區別是EnvDTE80, EnvDTE90 and EnvDTE100因為我嘗試使用EnvDTE100進行此示例 ,但由於對象處理的是Solution4而不是Solution2Solution4沒有相同的行為,所以它不起作用。
  2. 如何在不使用默認路徑但需要特定文件夾的情況下創建項目

更新

這是如果我使用名為EnvDTE80的dll可以工作的代碼

  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的命名空間中退出

EnvDTE80,EnvDTE90和EnvDTE100分別是VS 8.0(2005),9.0(2008)和10.0(2010)的DTE類型庫。

從VS2010開始,只有兩個DTE根對象接口-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 GetProjectTemplateSolution2 (但是GetProjectTemplate應該直接在Solution4上可用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM