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

时间:2017-08-24 15:09:49

标签: .net-core

是否有一种特殊的方法来卸载described in the .NET Core docs以外的文件夹模板dotnet new项目?

dotnet new -u <FILE_SYSTEM_DIRECTORY>

步骤

dotnet new设置文件夹模板后,我安装了它(per docs)。

dotnet new --install ./some-template-folder/

这样就可以成功放置模板,以便与dotnet new {shortName}一起使用。

The template "Some Template Name" was created successfully.

不幸的是,我之后无法使用适当的命令(per docs

卸载该模板
dotnet new --uninstall ./some-template-folder/

导致以下输出。

Could not find something to uninstall called '.\some-template-folder\'.

详细

如果有帮助,这里是文件夹的 .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"
}

提起错误

dotnet/templating#1226

1 个答案:

答案 0 :(得分:6)

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

潜在问题

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

使路径绝对

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

dotnet new --uninstall C:\full\path\to\some-template

避免使用终端斜杠

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

dotnet new --uninstall C:\full\path\to\some-template #<-- no terminal \ here

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

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

dotnet new --uninstall

它将输出一个这样的列表,其中包含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

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

dotnet new --uninstall C:\full\path\to\some-template