无法通过文件夹模板卸载`dotnet new`?

pat*_*dge 3 .net-core

dotnet new除了.NET Core文档中描述的内容之外,是否有一种卸载文件夹模板项目的特殊方法?

dotnet new -u <FILE_SYSTEM_DIRECTORY>
Run Code Online (Sandbox Code Playgroud)

脚步

设置文件夹模板后dotnet new,我安装了它(按文档).

dotnet new --install ./some-template-folder/
Run Code Online (Sandbox Code Playgroud)

这成功地将模板放置到位以供使用dotnet new {shortName}.

The template "Some Template Name" was created successfully.
Run Code Online (Sandbox Code Playgroud)

不幸的是,我之后无法使用适当的命令卸载该模板(每个文档)

dotnet new --uninstall ./some-template-folder/
Run Code Online (Sandbox Code Playgroud)

导致以下输出.

Could not find something to uninstall called '.\some-template-folder\'.
Run Code Online (Sandbox Code Playgroud)

细节

如果有帮助,这里是文件夹的.template.config子文件夹中包含的文件夹的最小template.json文件.

{
    "$schema": "http://json.schemastore.org/template",
    "author": "Some Author",
    "classifications": [ "Some", "Various", "Search Keywords" ],
    "identity": "Some.Identity",
    "shortName": "name-used-in-dotnetnew",
    "name": "Some Template Name"
}
Run Code Online (Sandbox Code Playgroud)

提起错误

DOTNET /模板#1226

pat*_*dge 9

结果证明我的机器特有的模板状态存在问题.在执行了dotnet new --debug:reinit将模板恢复到新安装状态后,问题就消失了.

潜在问题

虽然我的问题是特定于机器的,但是路径卸载有一些独特的元素dotnet new --uninstall <path>也可能导致此问题.

使路径绝对

虽然可以从相对路径(例如dotnet new --install ./some-template)安装,但必须从完全限定的路径卸载.

dotnet new --uninstall C:\full\path\to\some-template
Run Code Online (Sandbox Code Playgroud)

避免终端斜线

此外,当您传入完全限定的路径时--uninstall,请不要包括命令行环境在选项卡完成路径时可能自动包含的终端斜杠.

dotnet new --uninstall C:\full\path\to\some-template #<-- no terminal \ here
Run Code Online (Sandbox Code Playgroud)

[编辑:新的卸载列表选项]

虽然以下所有细节仍然准确无误,但他们现在已经添加了一个系统,用于确定所需的卸载字符串.运行不带任何参数的uninstall命令,以查看按卸载所需的确切字符串列出的已安装模板列表.

dotnet new --uninstall
Run Code Online (Sandbox Code Playgroud)

它将输出一个这样的列表,其中包含NuGet包的短名称和本地安装的模板的完整路径.

Template Instantiation Commands for .NET Core CLI

Currently installed items:
 Microsoft.DotNet.Common.ItemTemplates
 ...
 dotnet-new-project-helper
 C:\full\path\to\some-template
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用列出的路径卸载最终模板.

dotnet new --uninstall C:\full\path\to\some-template
Run Code Online (Sandbox Code Playgroud)