Repository navigation
Development Environment
| ツール | 用途 |
|---|---|
| Windows x64 | ホストとWPFプラグインの実行 |
| .NET 10 SDK | restore、build、test、pack |
| Visual Studio/Rider/VS Code | C#、WPF、デバッグ |
| CMake | ホストのCPU/GPUネイティブ部品 |
| Visual Studio 2022 C++ Build Tools | MSVC x64ネイティブビルド |
| Git | ソース取得と差分管理 |
ホストとWPFプラグインはnet10.0-windows、Contracts、SDK、SignalProcessing、ヘッドレスサンプルはnet10.0を対象にします。公式プラットフォームはx64、RIDはwin-x64です。
Developer PowerShellまたは通常のPowerShellで確認します。
dotnet --info
cmake --version
git --versiondotnet --infoで.NET 10 SDKとx64環境、cmake --versionでPATH設定を確認します。CMakeをPATHへ追加しない場合は、CMAKE_EXE環境変数へcmake.exeのフルパスを設定できます。
git clone https://github.com/sake846/SRdeck.git
cd SRdeck
dotnet restore SRdeck.sln作業前にgit statusでブランチとローカル変更を確認します。ホスト、プラットフォームライブラリ、プラグインを別リリースから混ぜないでください。
dotnet build SRdeck.sln -c ReleaseSRdeckのビルド前に次のネイティブ部品もCMakeで構築されます。
-
SRdeck/native/sr_fft: CPU FFT -
SRdeck/native/sr_gpu: GPU FFTとGPU描画
失敗した場合は、CMake、MSVC x64ツールセット、Windows SDK、出力された最初のネイティブエラーを確認します。後続のC#エラーだけを直そうとしないでください。
全試験:
dotnet test SRdeck.Tests\SRdeck.Tests.csproj -c Release試験名の一覧:
dotnet test SRdeck.Tests\SRdeck.Tests.csproj -c Release --list-testsSRdeck.TestsはxUnit.net v3を使用し、各回帰試験を独立した子プロセスで実行します。Test Explorerからも個別に選択でき、失敗後も後続項目を実行します。文書へ試験件数を固定せず、dotnet test --list-testsを正本にします。
最小のヘッドレスプラグインはContractsとSDKを参照します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\SRdeckPlugin.Contracts\SRdeckPlugin.Contracts.csproj" />
<ProjectReference Include="..\SRdeckPlugin.Sdk\SRdeckPlugin.Sdk.csproj" />
</ItemGroup>
</Project>必要な場合だけ追加します。
- UI:
SRdeckPlugin.Wpf、TargetFrameworkをnet10.0-windows、UseWPF=true - 共通DSP:
SRdeckCore.SignalProcessing - ネイティブ部品: x64配置、ライセンス、ロード失敗時処理
公式スターター:
-
docs/samples/SRdeckPlugin.Example: 生IQのヘッドレス例 -
docs/samples/SRdeckPlugin.ChannelExample: 標準チャネルIQの例
対象ホストと同じGitHub Releaseから次のNuGetパッケージを取得します。
SRdeckPlugin.ContractsSRdeckPlugin.SdkSRdeckPlugin.WpfSRdeckCore.SignalProcessing
4パッケージを同じ版に揃え、ローカルフィードへ置きます。公開フィードの無条件な最新版を参照せず、SRdeckPlatformVersionを対象ホスト版へ固定します。
<PropertyGroup>
<SRdeckPlatformVersion>0.1.0</SRdeckPlatformVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SRdeckPlugin.Contracts"
Version="$(SRdeckPlatformVersion)" />
<PackageReference Include="SRdeckPlugin.Sdk"
Version="$(SRdeckPlatformVersion)" />
</ItemGroup>実際の版は対象Releaseに合わせてください。復元時はローカルフィードに加え、パッケージの一般依存を取得するために組織で許可されたNuGetソースを設定します。
dotnet build docs\samples\SRdeckPlugin.Example\SRdeckPlugin.Example.csproj -c Release
dotnet run --project docs\samples\SRdeckPlugin.Example.Tests\SRdeckPlugin.Example.Tests.csproj -c Releaseチャネル例も同様にビルドとテストを実行します。新規プロジェクトを始める前にサンプルが通ることを確認すると、SDK環境と自作コードの問題を分離できます。
プラグインDLLは、実際に起動するSRdeck.exeと同じフォルダーへ置きます。pluginsサブフォルダーではありません。
<debug-host>\
├── SRdeck.exe
├── SRdeckPlugin.MyDecoder.dll
└── MyDecoder.NativeDependency.dll
推奨手順:
- クリーンなホストフォルダーを用意します。
- ビルド後イベントまたは手動コピーで対象プラグインだけを配置します。
- SRdeckを再起動します。
- MODE、Initialize、Activate、Start、Stopをログとデバッガーで確認します。
- DLLがロックされるため、再ビルド前にSRdeckを終了します。
ホスト本体の出力フォルダーへ多数の開発版を混在させると、依存競合の原因が分かりにくくなります。
-
dotnet buildで警告とAPI不一致を確認 - プラグイン単体テスト
- ライフサイクル適合テスト
- クリーンなホストでロード
- 既知IQ/実信号でDSP確認
- Start/Stop/MODE切り替え反復
- Release構成と配布フォルダーで再確認
- 全体回帰試験
テストと配布の詳細はテストと配布を参照してください。