以编程方式添加ClassLibrary项目

时间:2017-10-05 19:17:25

标签: c# visual-studio-extensions

我有一个VS 2017扩展程序并尝试使用我自己的自定义项目模板,通过以编程方式添加它,但事情并不顺利。 在我努力找到错误的过程中,我想看看是否是我的自定义项目模板导致问题。因此,我想以编程方式添加任何其他现有的内置VS项目,如ClassLibrary类型的项目模板。 它似乎位于这里:

  

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ ProjectTemplates \ CSharp \ Windows \ 1033 \

但是没有zip文件夹,根据Windows,我无法在该目录中创建一个。

我将使用类似于以下代码的内容:

Solution2 soln = (Solution2)visualStudioInstance.Solution;
string templatePath = soln.GetProjectTemplate("ClassLibrary.zip", "CSharp");
soln.AddFromTemplate(templatePath, projPath, "MyProjectName", false);

我是否在正确的轨道上? 我试过了,我得到了一个例外,但也许只是因为zip文件夹不存在。

更新

我得到的例外是:

  

"对象引用未设置为对象的实例。"

当我尝试添加对calcEngineProject的引用时,我在下面代码的最后一行得到它。 calcEngineProject为null,即使它进入if语句并且应该赋值为projCS.Object as VSProject2

代码如下:

            templatePath = soln.GetProjectTemplate("ClassLibrary.zip", "CSharp");              
            soln.AddFromTemplate(templatePath, prjPath, "ClassLibrary1", false);

            foreach (Project p in soln.Projects)
            {
                if (String.Compare(p.Name, "ClassLibrary1") == 0)
                {
                    projCS = p;
                    break;
                }
            }               

            if (projCS != null)
            {
                calcEngineProject = projCS.Object as VSProject2;
            }

         calcEngineProject.References.Add(Path.Combine(Config.Engine.EngineBinPath, "Engines.Calculation.dll"));

另外,我看到templatePath是这样的:

  

" C:\ PROGRAM FILES(X86)\ MICROSOFT VISUAL   STUDIO \ 2017年\专业\ COMMON7 \ IDE \ EXTENSIONS \ EYXTAMKA.FB4 \ ProjectTemplates \ CSHARP \ .NET   标准\ 1033 \ ClassLibrary \ ClassLibrary.vstemplate"

而不是

  

\%USERPROFILE%\ Documents \ My Exported Templates \

Upgrading custom project template

中所述

0 个答案:

没有答案