我试图从我的命令行运行dotnet aspnet-codegenerator
。我第一次尝试时,收到错误No executable found matching command "dotnet-aspnet-codegenerator"
我意识到我需要安装aspnet-codegenerator
as&#34; dotnet CLI工具&#34; (如果我在csproj文件中包含正确的<DotNetCliToolReference>
元素,则extensibility model的一部分允许添加CLI命令。) 1
This answer告诉我哪个<DotNetCliToolReference>
我需要,<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
但它给我留下了几个问题:
dotnet add
package
安装软件包,但是添加了元素<PackageReference>
,我需要<DotNetCliToolReference>
; <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
<ItemGroup>
吗? csproj
第一个且<ItemGroup>
包含<DotNetCliToolReference>
,则后续任何dotnet add package
命令都会失败:error: Invalid restore input. Invalid restore input. DotnetCliToolReference-BundlerMinifier.Core Input files:
。 DotNetCliToolReference
元素dotnet add package
1 (我在Visual Studio Code中使用最新的;所以我们使用csproj,而不是project.json)
答案 0 :(得分:15)
目前只能通过手工编辑csproj文件添加DotNetCliToolReference
项目,https://github.com/NuGet/Home/issues/4901
逻辑上的不同之处在于PackageReference
将成为您应用程序的一部分 - 您可以使用代码中附带的dll随附的dll,它将与您的应用程序一起部署。 DotNetCliToolReference
个包将从Feed中恢复,但不会添加到您应用的“依赖关系图”中。当CLI运行命令时,它会查看csproj文件,并通过DotNetCliToolReference
项将命令名解析为相应的dll文件。
这两个项目类型在哪个项目组中无关紧要。 MSBuild非常动态,您可以根据需要重新排列文件。 CLI和NuGet都使用MSBuild API来评估文件并查询项目的项目。
当dotnet add package
已经存在时,您看到DotNetCliToolReference
失败的错误是针对即将发布的2.0版本修复的错误:https://github.com/NuGet/Home/issues/4771