创建的 NuGet 包没有任何编译时程序集

Posted

技术标签:

【中文标题】创建的 NuGet 包没有任何编译时程序集【英文标题】:Created NuGet package does not have any compile time assemblies 【发布时间】:2021-12-17 16:02:50 【问题描述】:

我按照here 的说明从类库项目中创建了一个 NuGet 包。这些说明用于使用 dotnet cli。

我使用dotnet pack 创建包并使用nuget add 将其添加到本地存储库。

当我在另一个项目中安装包时,我发现我无法访问我的包的命名空间。但是我的包的依赖的命名空间是可用的。

这似乎是因为我的包没有发布自己的编译时程序集,但依赖项却发布了。

如何使用上述命令正确创建包?

其他信息:

myProject.csproj

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

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <PackageId>MyPackageHelpers</PackageId>
    <Version>1.0.0</Version>
    <Authors>My Name</Authors>
    <Company>My company</Company>
    <Description>
        This client library does X.
    </Description>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.7.1" />
    <PackageReference Include="AWSSDK.S3" Version="3.7.3.19" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" />
  </ItemGroup>

</Project>

使用dotnet pack

    cd 到包含项目代码的文件夹。 执行dotnet pack

使用nuget add

    cd 到包含您的 .nupkg 文件的文件夹。 执行nuget add your_package_id.1.0.0.nupkg -source "D:\my_local_nuget_package_folder"

【问题讨论】:

【参考方案1】:

要将包发布到本地文件夹,请正确使用nuget push

nuget push your_package_id.1.0.0.nupkg -source "D:\my_local_nuget_package_folder"

如果使用nuget add,则必须使用-expand 选项。

nuget add your_package_id.1.0.0.nupkg -source "D:\my_local_nuget_package_folder" -expand

这些命令将使用包含必要 dll 的 libs 文件夹正确创建包文件夹。

【讨论】:

以上是关于创建的 NuGet 包没有任何编译时程序集的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从本地 Nuget 包文件加载程序集

错误:找不到 2 个 Android X 程序集,请确保安装以下 NuGet 包:- Xamarin.AndroidX.MediaRouter

Nuget包仅用于内容文件

4.10使用NuGet包参考的插件不能正确部署

如何更改nuget包程序集版本

错误:此模板尝试加载组件程序集“Microsoft.VisualStudio.SmartDevice”