加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 多项目模板文件夹结构不正确

发布时间:2020-12-16 09:39:18 所属栏目:asp.Net 来源:网络整理
导读:所以我正在尝试构建一个多项目模板,当我设置它时,文件夹结构不正确(不是微软在创建项目时如何做到这一点),而且它正在搞乱像Packages文件夹和References文件夹. 这是当前的结构: Solution Folder-Solution File-Folder (Solution Name) --Packages --Referen
所以我正在尝试构建一个多项目模板,当我设置它时,文件夹结构不正确(不是微软在创建项目时如何做到这一点),而且它正在搞乱像Packages文件夹和References文件夹.

这是当前的结构:

Solution Folder
-Solution File
-Folder (Solution Name)
 --Packages
 --References
 --Project1 Folder
 --Project2 Folder

我希望它具有.NET自动执行的相同结构:

Solution Folder
-Solution File
-References Folder
-Packages Folder
-Project1 Folder
-Project2 Folder

这是我的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$">
        ASPTemplateMyTemplate.vstemplate
      </ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="$safeprojectname$.ClassLibrary">
        ClassLibraryMyTemplate.vstemplate
      </ProjectTemplateLink>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>

解决方法

我不认为可以使用vstemplates在父解决方案文件夹中添加解决方案文件夹.

但是,您可以尝试向模板添加向导,以便在用户从模板创建项目时运行自定义代码.

按照说明here和here,但基本上你做这样的事情:

>在ClassLibrary项目中实现IWizard interface并使用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)
}

>修改你的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>

然后,当您使用新模板创建项目时,代码应该正在运行.

希望这能以某种方式帮助你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读