我想基于一个已创建、测试并运行良好的模板创建一个新项目,但是当我试图在C#代码(在MVC3项目中)中完成时,遇到了两个问题:
EnvDTE80、EnvDTE90和EnvDTE100
之间有什么区别?因为我尝试使用EnvDTE100
进行这个示例,但它不起作用,因为该对象处理的是Solution4
而不是Solution2
,Solution4
的行为不同。- 如何在不使用默认路径的情况下创建项目,而使用我需要的特定文件夹?
更新:
这里是使用名为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
的命名空间中不存在。