我有以下代码,用于从指定模板向当前解决方案添加项目:
Solution2 solution = GetSolution();
string templatePath = "...";
string genProjectPath = $"C:\\TestVSIX\\{projectName}\\";
try {
solution.AddFromTemplate(templatePath, genProjectPath, projectName);
} catch (Exception ex) {
System.Diagnostics.Debug.WriteLine(ex.Message);
}
似乎可以正常工作,添加了项目,似乎都包含了文件,但是似乎只发生了一些替换。
...
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{9ED4A85F-9A60-4FEB-9736-7591511FE893}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>$safeprojectname$</RootNamespace>
<AssemblyName>$safeprojectname$</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
...
匹配的proj文件模板块定义为:
...
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{$guid1$}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>$safeprojectname$</RootNamespace>
<AssemblyName>$safeprojectname$</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
...
请注意,$ guid1 $已更新,而$ safeprojectname $未更新。 此外,$ safeprojectname $也没有在项目的其他文件中替换。
我尝试过的事情:
我试图将Wizard类绑定到模板,但是在使用AddFromTemplate方法添加项目时似乎没有触发(研究似乎证实了这一点)。
我能够通过“添加”>“项目”菜单确认何时使用模板,向导会触发并正确进行替换。
在调用AddFromTemplate之后,我寻找了一种强制替换的机制,但是我没有提到任何这样的事情。
我假设我可以手动实现替换,但是在打扰之前,我想了解为什么它不能正常工作。
谢谢!