Skip to content

Commit 50f0e3e

Browse files
Copilotha-ves
authored andcommitted
Resolve PR comments
* Implement resolved PR NetCordDev#257 review comments - Fix NetCord.Natives.targets comment typo: 'comes' -> 'come' - Normalize Importance='High' to 'high' in NetCord.Natives.csproj - Remove stale commented-out PackageReference in NativeAotApp.csproj - Update Resources/NuGet/README.md to link to docs for full package list - Add 'natives' devShell to flake.nix with autoconf/automake/libtool - Replace macOS brew step with Nix in build-natives.yml; split Build step for Windows/non-Windows - Pin all GitHub Actions by commit hash in build-natives.yml - Rename build-publish-natives.yml -> build-and-publish-natives.yml; pin download-artifact hash; fix self-reference in paths trigger Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/f6e9307c-fd0a-40c8-b3a8-e0484782c21e Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * fix: address natives README link and reflection method visibility Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/e686bf59-4e1e-4ec5-82f8-cc6b3ef93656 Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * README: add period to NetCord.Natives table description Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/0553c8bd-a710-4a4d-a8a8-deb3dc917faa Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Deduplicate native build workflow step and remove MSBuild XML schema namespaces Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/a0011395-8ab0-458e-a04e-8152069b7880 Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Fix README NetCord.Natives description punctuation Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/a0011395-8ab0-458e-a04e-8152069b7880 Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Revert prior README tweak and set NetCord.Natives row text as requested Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/52fb7ee0-c97d-452c-9d94-1eec13cd17ee Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Set README NetCord.Natives row to exact requested text Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/5f1c09c3-27c2-48af-872c-0ae465ec420b Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Update README natives row, native dependencies docs, and test configs - Update all README.md files with new NetCord.Natives.<RuntimeId> row format - Replace size column with NuGet package badges in native dependencies table - Clarify libsodium description regarding voice server encryption requirements - Update NativeAotApp.csproj: change DirectPInvoke to directly include libraries - Remove CentrallyManagedPackage false and NoWarn settings from NativeAotApp.csproj - Remove stray -bl argument from NativesBuildTests.cs GetRunCmd Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/e244793a-3f65-4653-8019-ee2d5151b0c1 Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Improve libsodium documentation with clearer explanation of encryption fallback scenarios Agent-Logs-Url: https://github.com/ha-ves/NetCord/sessions/2a7fe8b8-026b-4918-8d18-9356084ad340 Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> * Fix README for NetCord.Natives * fix readme in nuget --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ha-ves <20160532+ha-ves@users.noreply.github.com> Co-authored-by: Haves Irfan <haves.vansyah@gmail.com> fix CI shell error
1 parent 041858d commit 50f0e3e

14 files changed

Lines changed: 110 additions & 66 deletions

File tree

.github/workflows/build-publish-natives.yml renamed to .github/workflows/build-and-publish-natives.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
paths:
77
- 'NetCord.Natives/**'
88
- '.github/workflows/build-natives.yml'
9-
- '.github/workflows/publish-natives.yml'
9+
- '.github/workflows/build-and-publish-natives.yml'
1010
tags:
1111
- "[0-9]+.[0-9]+.[0-9]+"
1212
- "[0-9]+.[0-9]+.[0-9]+-*"
@@ -21,7 +21,7 @@ jobs:
2121

2222
steps:
2323
- name: Download All NuGet Package Artifacts
24-
uses: actions/download-artifact@v8.0.1
24+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
2525
with:
2626
path: artifacts/pkgs
2727
pattern: NetCord.Natives.*.packages

.github/workflows/build-natives.yml

Lines changed: 75 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,6 @@ on:
1515

1616
jobs:
1717
build-natives:
18-
runs-on: ${{ matrix.runs-on }}
19-
env:
20-
CI: true
21-
VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/.vcpkg-cache,readwrite
22-
VCPKG_DOWNLOADS: ${{ github.workspace }}/.vcpkg-downloads
23-
VcpkgOSTarget: ${{ matrix.vcpkg-os-target }}
24-
VcpkgPlatformTarget: ${{ matrix.vcpkg-platform-target }}
25-
Configuration: Release
26-
RuntimeIdentifier: ${{ matrix.rid }}
27-
DotnetVerbose: minimal
28-
GenerateBinLog: ${{ github.event.inputs.GenerateBinLog || inputs.GenerateBinLog || false }}
29-
3018
strategy:
3119
fail-fast: false
3220
matrix:
@@ -35,36 +23,55 @@ jobs:
3523
runs-on: windows-latest
3624
vcpkg-os-target: windows
3725
vcpkg-platform-target: x64
26+
run-prefix: ''
3827
- rid: win-arm64
3928
runs-on: windows-11-arm
4029
vcpkg-os-target: windows
4130
vcpkg-platform-target: arm64
31+
run-prefix: ''
4232
- rid: osx-x64
4333
runs-on: macos-15-intel
4434
vcpkg-os-target: osx
4535
vcpkg-platform-target: x64
36+
run-prefix: nix develop .#natives -c bash -eo pipefail -c
4637
- rid: osx-arm64
4738
runs-on: macos-15
4839
vcpkg-os-target: osx
4940
vcpkg-platform-target: arm64
41+
run-prefix: nix develop .#natives -c bash -eo pipefail -c
5042
- rid: linux-x64
5143
runs-on: ubuntu-latest
5244
vcpkg-os-target: linux
5345
vcpkg-platform-target: x64
46+
run-prefix: nix develop .#natives -c bash -eo pipefail -c
5447
- rid: linux-arm64
5548
runs-on: ubuntu-24.04-arm
5649
vcpkg-os-target: linux
5750
vcpkg-platform-target: arm64
51+
run-prefix: nix develop .#natives -c bash -eo pipefail -c
52+
53+
runs-on: ${{ matrix.runs-on }}
54+
env:
55+
CI: true
56+
VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/.vcpkg-cache,readwrite
57+
VCPKG_DOWNLOADS: ${{ github.workspace }}/.vcpkg-downloads
58+
VcpkgOSTarget: ${{ matrix.vcpkg-os-target }}
59+
VcpkgPlatformTarget: ${{ matrix.vcpkg-platform-target }}
60+
RUN_PREFIX: ${{ matrix.run-prefix }}
61+
Configuration: Release
62+
RuntimeIdentifier: ${{ matrix.rid }}
63+
DotnetVerbose: minimal
64+
GenerateBinLog: ${{ github.event.inputs.GenerateBinLog || inputs.GenerateBinLog || false }}
5865

5966
steps:
6067
- name: Checkout
61-
uses: actions/checkout@v6.0.2
68+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
6269
with:
6370
fetch-depth: 0
6471
filter: tree:0
6572

6673
- name: Restore vcpkg cache
67-
uses: actions/cache/restore@v5.0.5
74+
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
6875
with:
6976
path: |
7077
.vcpkg-cache
@@ -78,60 +85,87 @@ jobs:
7885
uses: ./.github/actions/setup-vcpkg
7986

8087
- name: Setup .NET Core SDK
81-
uses: actions/setup-dotnet@v5.2.0
88+
uses: actions/setup-dotnet@c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7 # v5.2.0
8289
with:
8390
global-json-file: global.json
8491

85-
- name: Install native build tools (macOS)
86-
if: runner.os == 'macOS'
87-
shell: bash
88-
run: |
89-
brew update
90-
for pkg in autoconf automake libtool; do
91-
brew list $pkg &>/dev/null || brew install $pkg
92-
done
92+
- name: Install Nix
93+
if: runner.os != 'Windows'
94+
uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
95+
96+
- name: Setup dev environment
97+
if: runner.os != 'Windows'
98+
shell: pwsh
99+
run: 'true'
93100

94101
- name: Restore
95102
shell: pwsh
96103
run: |
104+
$command = @'
97105
dotnet restore Tests/NetCord.Natives.Tests/NetCord.Natives.Tests.csproj -v ${{ env.DotnetVerbose }} ${{ env.GenerateBinLog == 'true' && '-bl:restore.binlog' || '' }}
106+
'@
107+
108+
if ($env:RUN_PREFIX) {
109+
Invoke-Expression "$env:RUN_PREFIX `"$command`""
110+
}
111+
else {
112+
Invoke-Expression $command
113+
}
98114
99115
- name: Build natives projects for ${{ matrix.rid }}
100116
shell: pwsh
101-
run: > # Building tests will build dependencies including the native libraries
102-
dotnet build Tests/NetCord.Natives.Tests/NetCord.Natives.Tests.csproj --no-restore -v ${{ env.DotnetVerbose }}
103-
${{ env.GenerateBinLog == 'true' && '-bl:build.binlog' || '' }}
104-
-p:AppendNativeAotAppProps="RuntimeIdentifier=${{ env.RuntimeIdentifier }}"
105-
-p:GeneratePackageOnBuild=false -p:CI=false
117+
run: | # Building tests will build dependencies including the native libraries
118+
$command = @'
119+
dotnet build Tests/NetCord.Natives.Tests/NetCord.Natives.Tests.csproj --no-restore -v ${{ env.DotnetVerbose }} ${{ env.GenerateBinLog == 'true' && '-bl:build.binlog' || '' }} -p:AppendNativeAotAppProps="RuntimeIdentifier=${{ env.RuntimeIdentifier }}" -p:GeneratePackageOnBuild=false -p:CI=false
120+
'@
121+
122+
if ($env:RUN_PREFIX) {
123+
Invoke-Expression "$env:RUN_PREFIX `"$command`""
124+
}
125+
else {
126+
Invoke-Expression $command
127+
}
106128
107129
- name: Test natives outputs for ${{ matrix.rid }}
108130
shell: pwsh
109-
run: >
110-
dotnet test Tests/NetCord.Natives.Tests/NetCord.Natives.Tests.csproj --no-restore --no-build -v ${{ env.DotnetVerbose }}
111-
${{ env.GenerateBinLog == 'true' && '-bl:test.binlog' || '' }}
112-
--logger "console;verbosity=detailed"
113-
--logger GitHubActions
131+
run: |
132+
$command = @'
133+
dotnet test Tests/NetCord.Natives.Tests/NetCord.Natives.Tests.csproj --no-restore --no-build -v ${{ env.DotnetVerbose }} ${{ env.GenerateBinLog == 'true' && '-bl:test.binlog' || '' }} --logger "console;verbosity=detailed" --logger GitHubActions
134+
'@
135+
136+
if ($env:RUN_PREFIX) {
137+
Invoke-Expression "$env:RUN_PREFIX `"$command`""
138+
}
139+
else {
140+
Invoke-Expression $command
141+
}
114142
115143
- name: Pack NuGet Package for ${{ matrix.rid }}
116144
if: ${{ always() }}
117145
shell: pwsh
118-
run: >
119-
dotnet pack NetCord.Natives/NetCord.Natives.csproj --no-restore --no-build -v ${{ env.DotnetVerbose }}
120-
${{ env.GenerateBinLog == 'true' && '-bl:pack.binlog' || '' }}
121-
-o NetCord.Natives/bin/${{ matrix.rid }}
122-
-p:CI=false
146+
run: |
147+
$command = @'
148+
dotnet pack NetCord.Natives/NetCord.Natives.csproj --no-restore --no-build -v ${{ env.DotnetVerbose }} ${{ env.GenerateBinLog == 'true' && '-bl:pack.binlog' || '' }} -o NetCord.Natives/bin/${{ matrix.rid }} -p:CI=false
149+
'@
150+
151+
if ($env:RUN_PREFIX) {
152+
Invoke-Expression "$env:RUN_PREFIX `"$command`""
153+
}
154+
else {
155+
Invoke-Expression $command
156+
}
123157
124158
- name: Upload Binary Logs
125159
if: ${{ env.GenerateBinLog == 'true' && always() }}
126-
uses: actions/upload-artifact@v4.6.0
160+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
127161
with:
128162
name: ${{ matrix.rid }}-binlogs
129163
path: |
130164
*.binlog
131165
132166
- name: Upload NuGet Package Artifact
133167
if: ${{ always() }}
134-
uses: actions/upload-artifact@v7.0.1
168+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
135169
with:
136170
name: NetCord.Natives.${{ matrix.rid }}.packages
137171
path: |
@@ -140,7 +174,7 @@ jobs:
140174
141175
- name: Save vcpkg cache
142176
if: ${{ always() }}
143-
uses: actions/cache/save@v5.0.5
177+
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
144178
with:
145179
path: |
146180
.vcpkg-cache

Documentation/guides/basic-concepts/installing-native-dependencies.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ NetCord relies on several native libraries for high-performance audio processing
55
## Native Dependencies Context
66

77
- **Libdave**: Essential for voice connection interactions.
8-
- **Libsodium**: Used for encryption. While NetCord defaults to native AES-GCM (which does not require Libsodium), Libsodium is a highly recommended production dependency. It acts as a fallback for the XChaCha20-Poly1305 encryption mode, ensuring your bot remains compatible if Discord switches to this mode for your connection.
8+
- **Libsodium**: Used for encryption and provides fallback encryption modes. NetCord attempts to use the platform's native AES-GCM encryption for voice connections. However, Libsodium becomes essential in two scenarios:
9+
- **Server-side limitation**: When connecting to a voice channel, Discord assigns you to a voice server. Depending on the server and region, it may or may not support AES-GCM. All voice servers support XChaCha20-Poly1305, so if AES-GCM is unavailable on the server you're assigned to, Libsodium is required to use XChaCha20-Poly1305 as a fallback.
10+
- **Hardware limitation**: If your hardware doesn't support AES-GCM (rare but possible on older CPUs), Libsodium is required to provide the XChaCha20-Poly1305 fallback encryption.
11+
12+
Without Libsodium, your bot will fail to connect to voice channels if either of these conditions occur.
913
- **Opus**: A versatile audio codec required for any classes in NetCord prefixed with `Opus` (e.g., audio encoding/decoding).
1014
- **Zstd**: Used for efficient payload compression.
1115

@@ -16,14 +20,14 @@ NetCord distributes these dependencies as per-RID (Runtime Identifier) packages.
1620
### Supported Platforms
1721
Packages are available for:
1822

19-
| Platform | RID | NativeAOT Support | <div style="text-align: center;">Size <br/> ![Storage Requirement](https://img.shields.io/badge/Runtime-Package-blue)</div> |
23+
| Platform | RID | NativeAOT Support | NuGet Package |
2024
|----------|-----|-------------------------|-----------|
21-
| Windows x64 | `win-x64` | ✓ (Static CRT /MT) | ![Windows x64](https://img.shields.io/badge/6_MB-42_MB_(176_MB)-blue) |
22-
| Windows ARM64 | `win-arm64` | ✓ (Static CRT /MT) | ![Windows ARM64](https://img.shields.io/badge/6_MB-41_MB_(183_MB)-blue) |
23-
| Linux x64 | `linux-x64` | ✓ (Dynamic CRT) | ![Linux x64](https://img.shields.io/badge/10_MB-9_MB_(28_MB)-blue) |
24-
| Linux ARM64 | `linux-arm64` | ✓ (Dynamic CRT) | ![Linux ARM64](https://img.shields.io/badge/10_MB-8_MB_(26_MB)-blue) |
25-
| ⓘ macOS x64 | `osx-x64` | ✓ (Dynamic CRT) | ![macOS x64](https://img.shields.io/badge/15_MB-11_MB_(28_MB)-blue) |
26-
| ⓘ macOS ARM64 | `osx-arm64` | ✓ (Dynamic CRT) | ![macOS ARM64](https://img.shields.io/badge/13_MB-10_MB_(25_MB)-blue) |
25+
| Windows x64 | `win-x64` | ✓ (Static CRT /MT) | [![NetCord.Natives.win-x64](https://img.shields.io/nuget/v/NetCord.Natives.win-x64?label=NetCord.Natives.win-x64)](https://www.nuget.org/packages/NetCord.Natives.win-x64) |
26+
| Windows ARM64 | `win-arm64` | ✓ (Static CRT /MT) | [![NetCord.Natives.win-arm64](https://img.shields.io/nuget/v/NetCord.Natives.win-arm64?label=NetCord.Natives.win-arm64)](https://www.nuget.org/packages/NetCord.Natives.win-arm64) |
27+
| Linux x64 | `linux-x64` | ✓ (Dynamic CRT) | [![NetCord.Natives.linux-x64](https://img.shields.io/nuget/v/NetCord.Natives.linux-x64?label=NetCord.Natives.linux-x64)](https://www.nuget.org/packages/NetCord.Natives.linux-x64) |
28+
| Linux ARM64 | `linux-arm64` | ✓ (Dynamic CRT) | [![NetCord.Natives.linux-arm64](https://img.shields.io/nuget/v/NetCord.Natives.linux-arm64?label=NetCord.Natives.linux-arm64)](https://www.nuget.org/packages/NetCord.Natives.linux-arm64) |
29+
| ⓘ macOS x64 | `osx-x64` | ✓ (Dynamic CRT) | [![NetCord.Natives.osx-x64](https://img.shields.io/nuget/v/NetCord.Natives.osx-x64?label=NetCord.Natives.osx-x64)](https://www.nuget.org/packages/NetCord.Natives.osx-x64) |
30+
| ⓘ macOS ARM64 | `osx-arm64` | ✓ (Dynamic CRT) | [![NetCord.Natives.osx-arm64](https://img.shields.io/nuget/v/NetCord.Natives.osx-arm64?label=NetCord.Natives.osx-arm64)](https://www.nuget.org/packages/NetCord.Natives.osx-arm64) |
2731

2832
ⓘ Currently, the macOS packages are built and published, but functions verification tests are skipped due to limitations with `dyld`.
2933
They are still expected to work correctly, but we recommend testing on macOS before production use.

NetCord.Natives/NetCord.Natives.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
<Target Name="ClCompile" BeforeTargets="BeforeBuild" DependsOnTargets="PrepareVcpkg"
120120
Condition="'$(NoBuild)' != 'true' and Exists('$(VcpkgMsbuildPath).targets')">
121121

122-
<Message Text="Building static native libraries..." Importance="High"
122+
<Message Text="Building static native libraries..." Importance="high"
123123
Condition="'$(VcpkgUseStatic)' != 'true'" />
124124
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="ClCompile"
125125
Properties="VcpkgUseStatic=true;GeneratePackageOnBuild=false"

NetCord.Natives/NetCord.Natives.local.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1+
<Project>
22

33
<Import Project="NetCord.Natives.targets" Condition="Exists('NetCord.Natives.targets')" />
44

NetCord.Natives/NetCord.Natives.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1+
<Project>
22

33
<PropertyGroup>
44
<!-- Populate this with dynamic (.dll/.so/.dylib) native libraries you want to exclude

NetCord.Natives/NetCord.Natives.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1+
<Project>
22

33
<Target Name="ProcessNetCordNativeAot" Condition="'$(PublishAot)' == 'true'"
44
AfterTargets="SetupOSSpecificProps" BeforeTargets="LinkNative">
55

66
<ItemGroup>
7-
<!-- Order matters, dependencies comes last -->
7+
<!-- Order matters, dependencies come last -->
88
<!-- 1. Top-level application libraries (The Consumers) -->
99
<_NetCordStaticLink Include="libsodium;sodium"
1010
Condition="'%(DirectPInvoke.Identity)' == 'libsodium'" />

NetCord.Natives/vcpkg-non-windows.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1+
<Project>
22

33
<ItemGroup Condition="'$(VcpkgEnabled)' == 'true' and '$(VcpkgEnableManifest)' == 'true' and '$(VcpkgBuildOS)' != 'win'" >
44
<_ZVcpkgInstallManifestDependenciesInputs Include="$(_ZVcpkgManifestFileLocation)"/>

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ You can install NetCord packages via NuGet package manager:
3232
| **[NetCord.Hosting](https://www.nuget.org/packages/NetCord.Hosting)** | Provides .NET Generic Host extensions for the NetCord package. |
3333
| **[NetCord.Hosting.Services](https://www.nuget.org/packages/NetCord.Hosting.Services)** | Provides .NET Generic Host extensions for the NetCord.Services package. |
3434
| **[NetCord.Hosting.AspNetCore](https://www.nuget.org/packages/NetCord.Hosting.AspNetCore)** | Provides ASP.NET Core extensions for seamless handling of HTTP events. |
35-
| **[NetCord.Natives](https://www.nuget.org/packages/NetCord.Natives)** | Provides pre-built native binaries dependencies. |
35+
| NetCord.Natives.&lt;RuntimeId&gt; | Provides pre-built native runtime dependencies binary.<br/>[See Native Dependencies Installation Guide.](https://netcord.dev/guides/basic-concepts/installing-native-dependencies.html) |
3636

3737
## 2. 🚀 Showcase
3838

Resources/NuGet/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ You can install NetCord packages via NuGet package manager:
2525
| **[NetCord.Hosting](https://www.nuget.org/packages/NetCord.Hosting)** | Provides .NET Generic Host extensions for the NetCord package. |
2626
| **[NetCord.Hosting.Services](https://www.nuget.org/packages/NetCord.Hosting.Services)** | Provides .NET Generic Host extensions for the NetCord.Services package. |
2727
| **[NetCord.Hosting.AspNetCore](https://www.nuget.org/packages/NetCord.Hosting.AspNetCore)** | Provides ASP.NET Core extensions for seamless handling of HTTP events. |
28-
| **[NetCord.Natives](https://www.nuget.org/packages/NetCord.Natives)** | Provides pre-built native binaries dependencies. |
28+
| NetCord.Natives.&lt;RuntimeId&gt; | Provides pre-built native runtime dependencies binary.<br/>[See Native Dependencies Installation Guide.](https://netcord.dev/guides/basic-concepts/installing-native-dependencies.html) |
2929

3030
## 2. 🚀 Showcase
3131

0 commit comments

Comments
 (0)