我正在构建一个 dotnet 核心工具,但在全局安装时遇到问题。我可以复制我遇到的问题,但不知道如何解决它。下面是我的步骤

  • dotnet 新控制台 -o testconsole
  • 修改 testconsole.csproj 以包含 <PackAsTool><PackageOutputPath>

  • testconsole.csproj
  • dotnet 恢复 testconsole.csproj
  • dotnet 构建 testconsole.csproj
  • dotnet 包 testconsole.csproj
  • dotnet 工具安装 -g -v d --add-source ./nupkg testconsole

  • 安装时我收到以下错误
    error NU1212: Invalid project-package combination for TestConsole 1.0.9. DotnetToolReference project style can only contain references of the DotnetTool type
    install error

    这是来自 nupkg 的 testconsole.nuspec 的副本,其中包括<packageType name="DotnetTool" /> 根据 https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/ 的建议

    testconsole.nupsec

    最佳答案

    找到根本原因后,这​​个错误很搞笑,但也是系统问题的征兆。

    您在输出中看到警告的这一部分了吗?



    这个1.0.9版本是什么? .NET Framework 4.6.1 来自哪里?在 .NET Core SDK(我查看了源代码)或我磁盘上的 testconsole 目录下没有类似的东西。

    让我们减少日志记录的详细程度并重新运行安装命令:

    $ dotnet tool install -g -v n --add-source ./nupkg testconsole
    Build started 2018-09-26 7:16:47 p.m..
         1>Project "/tmp/q2whkgqf.tbt/restore.csproj" on node 1 (Restore target(s)).
         1>Restore:
             Restoring packages for /tmp/q2whkgqf.tbt/restore.csproj...
               CACHE https://api.nuget.org/v3-flatcontainer/testconsole/index.json
               CACHE https://api.nuget.org/v3-flatcontainer/testconsole/1.0.9/testconsole.1.0.9.nupkg
             Installing TestConsole 1.0.9.0.
    

    仔细看最后几行。 dotnet tool install 正在尝试安装 https://www.nuget.org/packages/TestConsole/ 。不是您本地的 testconsole nuget 包!

    您可以通过以下几种方式解决它:
  • 为您的工具提供一个真正独特的名称,该名称不会与 nuget.org 或您组织的 nuget 提要中的任何内容发生冲突。
  • 添加一个 nuget.config <clear/> s nuget提要,以便在寻找安装 ./nupkg 时仅将 testconsole 目录用作提要。
  • 关于c# - 如何修复 NU1212 以安装 dotnet 工具,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52527004/

    10-13 06:20