c# - 发布引用其他程序集的 nuget 包

标签 c# .net nuget nuget-package

我正在编写一个 API,其中包含一些程序集,我将这些程序集作为 nuget 包发布(实际上已经完成)。

它被 split 了:

  • ChickenAPI.Core(应用程序、记录器、IoC 容器、一些数学实用程序、抽象事件管道的“核心”相关内容...)
  • ChickenAPI.Data(所有数据访问层、DTO 和抽象“存储库”)
  • ChickenAPI.Enums(所有游戏枚举)
  • ChickenAPI.Game(所有与游戏相关的事物、游戏实体、组件、事件...)
  • ChickenAPI.Packets(游戏使用的所有数据包结构)

我想在 nuget 上发布其中的每一个,但有些依赖于其他一些(例如游戏依赖于核心、数据、枚举和数据包,数据依赖于枚举...)

我应该将它们链接到本地​​引用,还是应该将它们的每个链接链接到各自的“远程包”? 相关API链接如下:https://github.com/BlowaXD/ChickenAPI/

最佳答案

您不需要使用 nuspec 文件来执行此操作 - 常规 .NET Core SDK 项目文件可以正常工作。

使用<ProjectReference>从一个项目引用另一个项目,这将成为 NuGet 包中依赖项的一部分。

例如:

ChickenApi.Core.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <!-- TODO: Extra NuGet properties, e.g. Description, Authors -->
    <Version>1.0</Version>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
</Project>

ChickenApi.Game.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <!-- TODO: Extra NuGet properties, e.g. Description, Authors -->
    <Version>1.0</Version>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\ChickenApi.Core\ChickenApi.Core.csproj" />
  </ItemGroup>
</Project>

如果你运行dotnet pack -c Release在解决方案上,这将创建两个 nupkg文件,每个项目一个。只需发布这两个包,一切都会好起来的。

需要注意的一件事是,如果您更改 ChickenApi.Core然后依赖 ChickenApi.Game 中的这些更改,您必须发布这两个软件包(带有更新的版本号)。很容易忘记更改 ChickenApi.Core 的版本,并发布新版本ChickenApi.Game 声称它仍然引用 1.0,但取决于发布 1.0 中未包含的更改。

关于c# - 发布引用其他程序集的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55232048/

相关文章:

c# - 在没有 SQL View 的情况下,将数据反规范化为代码优先 Entity Framework 实体

c# - IEnumerable/Enumerable with Double/Int;初学者

c# - Azure 函数 : Queue Trigger is expecting Base-64 messages and doesn't process them correctly

c# - 如何将我的 C# 程序作为计划任务运行

c# - 如何使用 Linq to Xml 获取单个 XElement 对象?

c# - 我应该如何在 C# 中使用属性?

.net - 用于安装 nuget 包的 PowerShell 脚本

.net - NuGet 恢复包但缺少 DLL

visual-studio - 当 cmdlet 提示输入信息时,如何防止包管理器控制台挂起?

c# - 应用程序需要先在 GAC 中安装 log4net 程序集