dotnet cli无法检测到已安装的软件包?

时间:2020-10-28 07:42:27

标签: c# asp.net .net .net-core dotnet-cli

我在Alpine-linux上关注https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-3.1&tabs=netcore-cli并使用dotnet cli。执行后

dotnet aspnet-codegenerator identity -dc WebApp1.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation"

收到以下错误:

Building project ...
Finding the generator 'identity'...
Running the generator 'identity'...
The given key '"Account.Register' was not present in the dictionary.
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.<BuildCommandLine>b__6_0()
   at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String[] args)
RunTime 00:00:04.45
Account.Login: No such file or directory
Account.Logout: No such file or directory
Account.RegisterConfirmation": No such file or directory

然后我尝试

dotnet aspnet-codegenerator --help

难得

Usage: aspnet-codegenerator [arguments] [options]

Arguments:
  generator  Name of the generator. Check available generators below.

Options:
  -p|--project             Path to .csproj file in the project.
  -n|--nuget-package-dir   
  -c|--configuration       Configuration for the project (Possible values: Debug/ Release)
  -tfm|--target-framework  Target Framework to use. (Short folder name of the tfm. eg. net46)
  -b|--build-base-path     
  --no-build               

No code generators are available in this project.Add Microsoft.VisualStudio.Web.CodeGeneration.Design package to the project as a NuGet package reference.

RunTime 00:00:00.90

然后我跑了

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

成功运行。我确认通过查看我的WebApp1.csproj文件,该文件确实包含以下行

    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" />

但是运行上面提到的错误命令会产生相同的输出。作为奖励,我跑了

dotnet aspnet-codegenerator identity --help

并获得以下输出

用法:aspnet-codegenerator [参数] [选项]

Arguments:
  generator  Name of the generator. Check available generators below.

Options:
  -p|--project             Path to .csproj file in the project.
  -n|--nuget-package-dir   
  -c|--configuration       Configuration for the project (Possible values: Debug/ Release)
  -tfm|--target-framework  Target Framework to use. (Short folder name of the tfm. eg. net46)
  -b|--build-base-path     
  --no-build               

Selected Code Generator: identity
No code generator found with the name 'identity'.

No code generators are available in this project.Add Microsoft.VisualStudio.Web.CodeGeneration.Design package to the project as a NuGet package reference.

RunTime 00:00:00.90

不幸的是,我的谷歌搜索技能无法脚手架,因为这个最受欢迎的框架的错误性和整体混乱以及寻求解决方案的地方比社区更好。首先将其评为最受欢迎的框架

更新:

如第一条评论所述,dotnet cli(或我的shell)的表现很奇怪,双引号引起了,所以我尝试运行(这次单引号)

dotnet aspnet-codegenerator identity -dc WebApp1.Data.ApplicationDbContext --files 'Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation'

并获得了第一个引用的错误的精简版本:

Building project ...
Finding the generator 'identity'...
Running the generator 'identity'...
A file matching the name Account.Register.cs.cshtml was not found within any of the folders: 
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.<BuildCommandLine>b__6_0()
   at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String[] args)
RunTime 00:00:04.57

在运行完全不带引号的相同命令时,实际上会产生与双引号相同的错误。

奇怪的是,在某些运行中,行A file matching the name Account.Register.cs.cshtml was not found within any of the folders:可能会出现在消息的末尾,指示正在搜索Account.Register.cs.cshtml文件的“文件夹”为null或空字符串,并且并非所有at...at...at...无用的东西。

另一个更新:shell版本

上面讨论的所有命令都是使用plan9port的rc shell运行的。当使用像ash这样的posix shell运行时,用双引号运行与使用rc的单引号产生的输出相同,而用单引号运行则消除了A file matching the name Account.Register.cs.cshtml was not found within any of the folders:的消息。在所有不带引号的情况下运行,结果dotnet命令的输出与带单引号的结果相同,但是很明显posix shell将这些分号作为命令的结尾并尝试执行废话。

0 个答案:

没有答案