Visual Studio项目模板在外部目录中创建解决方案文件

Jen*_*iya 7 templates projects-and-solutions project visual-studio

我正在使用VSTemplate为Visual Studio创建多项目模板.

我是项目模板的新手,并引用此URL为Visual Studio创建多项目模板.

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>MVC with Repo and UoW</Name>
    <Description>Basic by Jenish</Description>
    <Icon>Icon.ico</Icon>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>false</CreateNewFolder>
    <DefaultName>MVC</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>

          <ProjectTemplateLink ProjectName="$safeprojectname$.Common">
            KLS.Common\MyTemplate.vstemplate
          </ProjectTemplateLink>



          <ProjectTemplateLink ProjectName="$safeprojectname$.Data.Contract">
            KLS.Data.Contract\MyTemplate.vstemplate
          </ProjectTemplateLink>
          <ProjectTemplateLink ProjectName="$safeprojectname$.Data.Repositories">
            KLS.Data.Repositories\MyTemplate.vstemplate
          </ProjectTemplateLink>



          <ProjectTemplateLink ProjectName="$safeprojectname$.Manager">
            KLS.Manager\MyTemplate.vstemplate
          </ProjectTemplateLink>



          <ProjectTemplateLink ProjectName="$safeprojectname$.Models">
            KLS.Models\MyTemplate.vstemplate
          </ProjectTemplateLink>


      <ProjectTemplateLink ProjectName="$safeprojectname$.Web">
        KLSFoods\MyTemplate.vstemplate
      </ProjectTemplateLink>

    </ProjectCollection>
  </TemplateContent>
  <WizardExtension>
    <Assembly>RestTemplateWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c9a76f51a8a9555f</Assembly>
    <FullClassName>RestTemplateWizard.RootWizard</FullClassName>
  </WizardExtension>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)

截图1:

在此输入图像描述

按照上面的屏幕截图,Mytemplate.vstemplate是主根文件,除了包之外的所有文件夹都包含每个项目的单独vstemplate文件.

现在问题是我希望生成相同的结构,因为它出现在第一个屏幕截图上,但它在外部目录中生成解决方案.有没有什么办法可以强制模板按照屏幕截图创建解决方案1.

模板目前正在生成这样的解决方案.

截图2:

在此输入图像描述

Mvc1将保存所有项目文件夹,我想要的是创建解决方案文件,其中定义了所有项目文件夹.因为目前它错误地引用了packages文件夹

提前致谢.

Lut*_*her 1

我遇到了同样的问题,我的解决方法是编辑解决方案文件 (*.sln) 并将文件移动到预期文件夹中。

这是模板生成的文件夹结构(不是我所期望的):

我的解决方案文件夹:

请注意 .sln 文件不在项目的同一文件夹中

在此输入图像描述

文件夹 DDD_Backend10xxxx,包含所有项目:

在此输入图像描述

步骤 1:将 .sln 文件移动到包含所有项目的子文件夹中(根据项目工作的需要):

在此输入图像描述

*.sln 文件与其余项目移至同一文件夹

在此输入图像描述

.sln 文件现在与项目文件夹一起位于正确的解决方案文件夹级别中。

步骤2:打开并编辑.sln文件并修改所有项目的路径:

  • 未编辑的路径导致错误:

项目("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BusinessLayer", " DDD_Backend10xxxx \BusinessLayer", "{F9E1B70C-F692-414B-97C6-BCEC22F6C1F3}" EndProject

项目(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”)=“BusinessLayer”,“ DDD_Backend10xxxx \ BusinessLayer \ BusinessLayer.csproj”,“{0CF94CF4-97C6-4079-8F60-672CBE9B77D5}”EndProject

//其他项目参考...

  • 修复编辑路径:从路径中删除文件夹“DDD_Backend10xxxx”

项目(“{2150E333-8FDC-42A3-9474-1A3956D46DE8}”)=“BusinessLayer”,“BusinessLayer”,“{F9E1B70C-F692-414B-97C6-BCEC22F6C1F3}”

项目(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”)=“BusinessLayer”,“BusinessLayer\BusinessLayer.csproj”,“{0CF94CF4-97C6-4079-8F60-672CBE9B77D5}”EndProject

//其他项目参考...

步骤3:修改primary/root项目root_project_name.csproj文件,为nuget扩展引用路径。 修改对包文件夹的任何引用,以便它们引用同一文件夹级别中的包文件夹。IE。

来自:导入项目=“ ....\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1”

至:导入项目=“ ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1”

这是nuget包更新或安装的重要参考。

在此输入图像描述

步骤 4:运行 nuget 来更新/恢复包。 一旦 nuget 更新/恢复包,将在正确的文件夹级别创建“packages”文件夹。(在包管理器控制台窗口中运行命令update-package -reinstall 。)