gpt4 book ai didi

.net-core - dotnet 核心 PackageReference 与 DotNetCliToolReference

转载 作者:行者123 更新时间:2023-12-04 00:46:25 24 4
gpt4 key购买 nike

我正在尝试运行 dotnet aspnet-codegenerator从我的命令行。第一次尝试时,我收到错误 No executable found matching command "dotnet-aspnet-codegenerator"
我意识到我需要安装 aspnet-codegenerator作为“dotnet CLI 工具”(如果我在 csproj 文件中包含正确的 <DotNetCliToolReference> 元素,他们的 extensibility model 的一部分允许添加 CLI 命令。)1

This answer告诉我哪个 <DotNetCliToolReference>我需要,即 <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />但这给我留下了几个问题:

  • 我可以使用命令行而不是手动编辑来安装它吗
    csproj?
  • 我注意到我可以使用命令 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)

    最佳答案

  • 目前正在添加 DotNetCliToolReference项目只能通过手动编辑 csproj 文件。该功能在 .NET Core 3.0 中已被弃用,因为它会导致难以调试的奇怪不兼容性。见:https://github.com/dotnet/sdk/issues/3115
  • 逻辑上的区别是 PackageReference s 将成为您的应用程序的一部分 - 您可以使用代码中随包附带的 dll,它将与您的应用程序一起部署。 DotNetCliToolReference包将从提要中恢复,但不会添加到应用程序的“依赖关系图”中。当 CLI 运行命令时,它还会查看 csproj 文件,通过 DotNetCliToolReference 将命令名称解析为相应的 dll 文件。项目。
  • 这两种项目类型在哪个项目组中并不重要。 MSBuild 非常动态,您可以根据需要重新排列文件。 CLI 和 NuGet 都使用 MSBuild API 来评估文件并查询项目的项。
  • 您看到的错误是 dotnet add packageDotNetCliToolReference 失败时已经存在是即将发布的 2.0 版本已修复的错误:https://github.com/NuGet/Home/issues/4771
  • 关于.net-core - dotnet 核心 PackageReference 与 DotNetCliToolReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169037/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com