【问题标题】:how to publish nuget package如何发布nuget包
【发布时间】:2020-12-26 20:17:44
【问题描述】:

我正在尝试在doc 之后发布 NuGet 包。

当我运行 dotnet pack 时,我得到了这个响应

适用于 .NET Core 的 Microsoft (R) Build Engine 版本 16.4.0+e901037fe 版权所有 (C) 微软公司。保留所有权利。

在 59.66 毫秒内完成恢复 /Users/ali/Desktop/earthlink/AutoCrud/AutoCrud.csproj.

在我关注的文档中,输出应该是这样的:

适用于 .NET Core 的 Microsoft (R) Build Engine 版本 15.5.180.51428 版权所有 (C) 微软公司。保留所有权利。

在 29.91 毫秒内完成恢复 D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj。应用记录器 -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll 成功创建包 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'。

如您所见,在我的情况下,没有创建 .nupkg 文件。

这是我的.csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <PackageId>AutoCrud</PackageId>
        <Version>1.0.0</Version>
        <Authors>Ali Faris</Authors>
        <Company>Ali Faris</Company>
        <PackageLicenseExpression>MIT</PackageLicenseExpression>
        <RepositoryUrl>https://github.com/alicompiler/AutoCrud.NetCore</RepositoryUrl>
        <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.7"/>
        <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.7"/>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1"/>
        <PackageReference Include="Moq" Version="4.14.5"/>
        <PackageReference Include="xunit" Version="2.4.1"/>
        <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
            <PrivateAssets>all</PrivateAssets>
        </PackageReference>
        <FrameworkReference Include="Microsoft.AspNetCore.App"/>
    </ItemGroup>
</Project>

我怎样才能生成这个.nupkg 文件。

顺便说一句,我使用的是 macOS

【问题讨论】:

  • 我通常使用记事本编辑 csproj 文件以防止出现此类问题。 Visual Studio 使用完整路径名将对象添加到项目中。当我有一个引用其他项目的 VS 项目时,我喜欢使用相对路径名。您收到错误,因为其中一个路径包含 D:\,它不在计算机上。
  • 我正在使用带有 Rider 作为我的编辑器的 macOS。我没有收到任何错误,我遇到的问题是当我运行dotnet pack 时没有生成.nuget 文件@
  • 如果你使用&lt;GeneratePackageOnBuild&gt;true&lt;/GeneratePackageOnBuild&gt;,它应该在使用dotnet build时生成,不需要打包。
  • 在输出文件夹 . 中进行搜索并按时间排序并查看最新创建的文件。打开任何日志文件以查看其他调试信息是否在任何文件中。
  • 这个问题似乎与我在删除所有工作文件的依赖项时所拥有的依赖项有关。但是当我包含依赖项时,就会出现问题。仍在尝试为此找出解决方案

标签: c# nuget


【解决方案1】:

this的帮助下

问题似乎与某些依赖项有关,特别是:xunitMicrosoft.NET.Test.Sdk,这些依赖项“不可打包”。

解决方案是将&lt;IsPackable&gt;true&lt;/IsPackable&gt; 添加到 PropertyGroup

<PropertyGroup>
    <IsPackable>true</IsPackable>
     ...
</PropertyGroup>

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多