【问题标题】:Creating a Nuget Package with Nuget Pack Says to Add a dependency group for net6.0 to the nuspec and Dots Required?使用 Nuget Pack 创建 Nuget 包 说要将 net6.0 的依赖组添加到 nuspec 和需要的点?
【发布时间】:2022-02-03 06:27:46
【问题描述】:

在使用 nuget.exe 从 c# .net 6 类库创建 nuget 包时,我首先运行“nuget spec”以生成 nuspec 文件。然后,当尝试通过运行“nuget pack”创建 nuget 包 .nupkg 时,输出显示:

"在依赖项组中声明的一些目标框架 nuspec 和 lib/ref 文件夹在另一个中没有完全匹配 地点。请参阅以下操作列表: 将 net6.0 的依赖组添加到 nuspec"

以下打包文件夹需要框架版本中的点:lib/net60/myLibrary.dll

这是一个干净的 .net 6 类库,nuget.exe 是 6.0 版本。

为什么它认为我在 nuspec 和 lib/ref 文件夹的依赖项组中有任何内容与“其他位置”不匹配?我什至在 nuspec 中都没有依赖项组。

我好像在我的csproj中声明的目标框架中放了点,为什么它抱怨我的框架说明符缺少点?

我的 csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <PackageId>myLibrary</PackageId>
    <Author>me</Author>
    <Company>myCompany</Company>
    <Description>Library defining common objects</Description>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

我的 nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <!-- <icon>icon.png</icon> -->
    <projectUrl>http://project_url_here_or_delete_this_line/</projectUrl>
    <description>$description$</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>$copyright$</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
</package>

【问题讨论】:

  • 为什么需要 nuspec?我可以像这样完美地运行dotnet packHere's my Github workflow
  • @Pieterjan 我宁愿不使用 nuspec,实际上是在尝试对 dotnet pack 进行故障排除,因为它似乎不起作用。运行 dotnet pack 后,我期待 .nupkg 输出,但 dotnet pack 正在输出 .nuspec。然后似乎我需要针对 .nuspec 运行 nuget pack 以使任何事情发生。您是否获得了针对 .net6.0 的类库的 dotnet pack 的 .nuget 输出?尝试通过“dotnet add package myLibrary --version 1.0.0”将 dotnet 包的输出 nuspec 添加到另一个项目时总是显示“错误:没有可用于包 'myLibrary' 的版本”
  • @Pieterjan - 好吧,我只是一个 dotnet 包的白痴 - 在我看到在 obj.所以 dotnet pack 生成了一个 .nupkg 罚款 - 现在回到试图弄清楚为什么将它添加到另一个项目总是说“错误:没有可用的版本包 'myLibrary'。”
  • 命令dotnet nuget list source的输出是什么?您的软件包是否已发布到这些来源中的任何一个?您还可以添加具有本地文件夹引用的源。

标签: c# nuget .net-6.0


【解决方案1】:

我很笨 - 但这是我修复的,以防有人犯我犯的同样错误。

1.) 我一直在尝试使用 nuget.exe 的“nuget pack”命令而不是“dotnet pack”命令,但一直收到“错误:包 'myLibrary' 没有可用的版本。”将输出添加到另一个项目时。

2.) 我曾认为“dotnet pack”可能不起作用,因为我看到它输出的是 nuspec 文件而不是 nupkg。这是一个误解,因为它同时输出了两者。 nupkg 位于 bin 文件夹中,nuspec 显示在 obj 中。

3.) 我在我的 csproj 属性组中犯了一个错误,没有包含这样的“版本”标签:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <PackageId>myLibrary</PackageId>
    <Version>1.0.0</Version>
    <Author>me</Author>
    <Company>myCompany</Company>
    <Description>Library defining common objects</Description>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

考虑过删除这个悲伤的问题,但会留下它,以防其他人做出与我一样的错误假设和错误。

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 2016-09-13
    • 2019-09-16
    • 2017-01-27
    • 1970-01-01
    • 2013-02-07
    • 2021-12-18
    • 2015-10-13
    • 2015-04-21
    相关资源
    最近更新 更多