我有一个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 \