Step 1 — Add NuGet Packages
Kita akan tambah package ke dua project utama:
HermesNetwork(UI / client)HermesServices/HermesServiceEngine(service / server)
1.1 Locate the csproj files
Dari root repo:
HermesNetwork/HermesNetwork.csproj
HermesServices/HermesServiceEngine/HermesServiceEngine.csproj
1.2 Tambah PackageReference
Buka HermesNetwork/HermesNetwork.csproj dan tambahkan di <ItemGroup> PackageReference yang sudah ada:
HermesNetwork/HermesNetwork.csproj
<ItemGroup>
<!-- ... existing references ... -->
<PackageReference Include="StreamJsonRpc" Version="2.19.27" />
<PackageReference Include="Nerdbank.Streams" Version="2.11.74" />
</ItemGroup>
Lakukan hal yang sama di HermesServices/HermesServiceEngine/HermesServiceEngine.csproj.
1.3 Restore & verify
dotnet restore HermesNetwork/HermesNetwork.csproj
dotnet restore HermesServices/HermesServiceEngine/HermesServiceEngine.csproj
Pastikan target framework kedua project minimal net8.0 (StreamJsonRpc 2.19+ butuh net6.0+; net8.0 direkomendasikan untuk Hermes karena sudah pakai Avalonia 11).
Cek di csproj:
<TargetFramework>net8.0</TargetFramework>
1.4 Buat shared contract project (opsional tapi sangat direkomendasikan)
Saat ini DTO di-duplicate di 3 tempat:
HermesNetwork/Models/IpcMessageCommand.csHermesServices/HermesServiceEngine/Models/IpcMessageCommand.csHermesServices/SaseService/Models/IpcMessageCommand.cs
Buat project baru HermesIpc.Contracts yang akan jadi single source of truth untuk:
- Interface RPC (
IHermesRpc) - DTO domain (kalau perlu)
- Konstanta (menggantikan
IpcConst.csyang juga duplicated)
cd HermesServices
dotnet new classlib -n HermesIpc.Contracts -f net8.0
cd ..
dotnet sln HermesNetwork360.sln add HermesServices/HermesIpc.Contracts/HermesIpc.Contracts.csproj
Tambahkan reference di kedua project:
HermesNetwork/HermesNetwork.csproj
<ItemGroup>
<ProjectReference Include="..\HermesServices\HermesIpc.Contracts\HermesIpc.Contracts.csproj" />
</ItemGroup>
HermesServices/HermesServiceEngine/HermesServiceEngine.csproj
<ItemGroup>
<ProjectReference Include="..\HermesIpc.Contracts\HermesIpc.Contracts.csproj" />
</ItemGroup>
1.5 Sanity check build
dotnet build HermesNetwork360.sln
Tidak ada error → lanjut ke Step 2: Define Contracts.
Checklist
- Package
StreamJsonRpc2.19.27 ditambahkan keHermesNetwork - Package
StreamJsonRpc2.19.27 ditambahkan keHermesServiceEngine - Package
Nerdbank.Streams2.11.74 ditambahkan - Target framework
net8.0di kedua project - Project
HermesIpc.Contractsdibuat & direferensikan -
dotnet buildsukses tanpa error