c# – 以编程方式创建Visual Studio项目
发布时间:2020-12-15 17:49:14 所属栏目:百科 来源:网络整理
导读:我的问题是,我想创建一个新的项目,在一个已经创建测试和工作正常的模板,但我有两个问题,当我试图在C#代码(在mvc3项目中). EnvDTE80,EnvDTE90和EnvDTE100之间有哪些区别,因为我试图用EnvDTE100做this example,但是它不起作用,因为对象处理它的Solution4不是So
我的问题是,我想创建一个新的项目,在一个已经创建测试和工作正常的模板,但我有两个问题,当我试图在C#代码(在mvc3项目中).
> EnvDTE80,EnvDTE90和EnvDTE100之间有哪些区别,因为我试图用EnvDTE100做this example,但是它不起作用,因为对象处理它的Solution4不是Solution2和Solution4没有相同的行为. UPDATE 这里的代码,如果我使用的名称为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 SettingsjmachadoEscritorio"; projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from '<drive>:Program FilesMicrosoft Visual Studio 8Common7IDEProjectTemplatesLanguage.' 但是如果我使用了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 SettingsjmachadoEscritorio"; projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from '<drive>:Program FilesMicrosoft Visual Studio 8Common7IDEProjectTemplatesLanguage.' 并且说,DTE2不会在EnvDTE100的命名空间中退出 解决方法
EnvDTE80,EnvDTE90和EnvDTE100是VS 8.0(2005),9.0(2008)和10.0(2010)相应的DTE类型库.
只有两个DTE根对象接口,从VS2010到DTE2是最新的.所以,要获得VS 2010的DTE对象,您可以执行以下操作: System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); Object obj = System.Activator.CreateInstance(type,true); EnvDTE8.DTE2 dte = (EnvDTE100.DTE2)obj; 请注意,ProgID为“10.0”,但变量类型仍为EnvDTE8.DTE2. 其余的应该在那里工作.还要注意,如果需要,您可以随时将Solution4转换为Solution2(但是GetProjectTemplate应该可以直接在Solution4上使用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |