Visual Studio 如何阻止dotnet解决方案模板嵌套输出

cetgtptt  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一个Visual Studio解决方案,其中有一个.template.config目录,其中包含一个template.json文件。

{
  "$schema": "http://json.schemastore.org/template",
  "author": "Me",
  "classifications": [ "Library" ],
  "identity": "Our.Microservice.Template",
  "name": "Our Microservice Solution Pattern",
  "shortName": "our-microservice",
  "tags": {
    "type": "solution",
    "language": "C#"
  },
  "sourceName": "Our.Microservice.Template",
  "defaultName": "Our.Services.SERVICE-NAME-HERE",
  "preferNameDirectory": false,
  "guids": [
    "dd357121-d106-45e8-99b7-324ea4b1babb",
    "5cb69290-d0c5-4edc-ba1d-0b4b4f619157",
    "cb79b212-29fc-44c6-a9a7-bb96b2327fd9"
  ]
}

我在解决方案的根目录中也有一个SolutionTemplate.nuspec

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>Our.Microservice.Template</id>
    <version>1.0.0</version>
    <description>
      Blah blah blah.
    </description>
    <authors>Me</authors>
    <license type="expression">Apache-2.0</license>
    <packageTypes>
      <packageType name="Template" />
    </packageTypes>
  </metadata>
  <files>
    <file src="**\*.*"             exclude="**\bin\**\*.*;**\obj\**\*.*;**\*.nuspec;**\*.nupkg;**\*.suo;docs\**;.git\**;**\.gitignore;.vs\**;.vscode\**;" 
             />
  </files>  
</package>

我一直在打包模板:

nuget.exe pack "<path-to-dir>\SolutionTemplate.nuspec"

然后安装:

dotnet new --install "<path-to-dir>\Our.Microservice.Template.1.0.0.nupkg"

这是可行的,但是当我从模板创建一个新的解决方案时,输出会嵌套在一个额外的目录中,例如:
如果在VS的创建对话框中,我选择的位置为c:\development\existing-git-repo,则最终输出将为

c:
    \development
        \existing-git-repo
            \PROJECT-NAME
                \dir-1
                \dir-2
                \file-1
                \file-2

有没有办法阻止它在额外的目录中嵌套输出(基于项目名称)?
所以结果会是:

c:
    \development
        \existing-git-repo
            \dir-1
            \dir-2
            \file-1
            \file-2
dz6r00yl

dz6r00yl1#

最后,我发现停止额外嵌套的最好(也是唯一)方法是确保使用命令行而不是通过Visual Studio创建新的解决方案。
如果我们使用dotnet new,我们可以使用输出选项:

dotnet new --help
...
-o, --output                   Location to place the generated output.

如果我们将其设置为./,则会停止额外的嵌套,例如:

dotnet new mvc -n MyMvcApp -o ./

相关问题