And*_*ris 5 .net asp.net templates visual-studio-2012
所以我正在尝试构建一个多项目模板,当我设置它时,文件夹结构出现错误(不是微软在创建项目时是如何做的)并且它把诸如Packages文件夹和References文件夹之类的东西弄乱了。
这是当前的结构:
Solution Folder
-Solution File
-Folder (Solution Name)
--Packages
--References
--Project1 Folder
--Project2 Folder
Run Code Online (Sandbox Code Playgroud)
我希望它具有 .NET 自动执行的相同结构:
Solution Folder
-Solution File
-References Folder
-Packages Folder
-Project1 Folder
-Project2 Folder
Run Code Online (Sandbox Code Playgroud)
这是我的 vstemplate:
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
<TemplateData>
<Name>ASP Solution Template</Name>
<Description>This is the Solution Template for ASP Applications</Description>
<Icon>__TemplateIcon.ico</Icon>
<ProjectType>CSharp</ProjectType>
</TemplateData>
<TemplateContent BuildOnLoad="true">
<ProjectCollection>
<SolutionFolder Name="References">
</SolutionFolder>
<SolutionFolder Name="packages">
</SolutionFolder>
<ProjectTemplateLink ProjectName="$safeprojectname$">
ASPTemplate\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$safeprojectname$.ClassLibrary">
ClassLibrary\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
我认为不可能使用 vstemplates 在父解决方案文件夹中添加解决方案文件夹。
但是,您可以尝试向模板添加一个向导,使您能够在用户从模板创建项目时运行自定义代码。
在 ClassLibrary 项目中实现IWizard 接口并使用EnvDTE80创建文件夹:
public class MyWizard : IWizard
{
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
{
// Pseudo-code
var dte = (DTE2)automationObject;
var solution = (Solution2)dte.Solution;
solution.AddSolutionFolder("References");
}
// Default implementations of IWizard here (return true's and do nothing's)
}
Run Code Online (Sandbox Code Playgroud)修改您的 vstemplate 以使用向导:
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
<TemplateData />
<TemplateContent BuildOnLoad="true" /> <!-- Remove the SolutionFolder elements -->
<WizardExtension>
<Assembly>CustomWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=fa3902f409bb6a3b</Assembly>
<FullClassName>CustomWizard.MyWizard</FullClassName>
</WizardExtension>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)然后,当您使用新模板创建项目时,代码应该正在运行。
希望这对您有所帮助。
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |