Debugowanie
Podczas uruchamiania aplikacja Syrve POS skanuje wtyczki i uruchamia proces-kontener Resto.Front.Api.Host.exe dla każdej z nich, w kontekście którego wtyczka będzie działać. Dla wygody debugowania możliwe jest uruchomienie tego procesu bezpośrednio z interfejsu deweloperskiego, aby to zrobić w parametrach debugowania projektu wtyczki należy ustawić proces-hosta Resto.Front.Api.Host.exe jako program zewnętrzny i przekazać następujące argumenty wiersza poleceń:
-a,--assembly=plik — pełna ścieżka do pliku wtyczki-c,--class=nazwa — pełna nazwa klasy wtyczki (łącznie z przestrzenią nazw)-l,--log=log — pełna ścieżka do pliku logu-m,--module=id — moduł licencyjny określony w atrybuciePluginLicenseModuleId(Licencjonowanie),-n,--nowindow— nie wyświetlaj okna konsoli
Następnie wystarczy uruchomić aplikację Syrve POS raz (bez instalowania wtyczki do folderu Plugins) i będzie można wielokrotnie uruchamiać i zatrzymywać wtyczkę bezpośrednio ze środowiska deweloperskiego (F5 / Shift+F5 w Visual Studio, Alt-F5 w Riderze) bez ponownego uruchamiania Syrve POS. Debugger połączy się automatycznie, dzięki czemu punkty przerwania będą działać, a debugowanie zostanie przerwane w przypadku wystąpienia wyjątków (w Visual Studio/Rider można ustawić, dla jakich typów wyjątków debugowanie ma być przerywane, a dla jakich nie). Zapis w logu (PluginContext.Log) będzie duplikowany w oknie konsoli, jeśli nie jest ono ukryte przez klucz --nowindow, oraz w oknie Output (Ctrl+Alt+O), jeśli debugger jest podłączony.
Do debugowania wtyczki w ten sposób potrzebna jest licencja dewelopera wtyczek.
Visual Studio
Klasyczny .csproj
Przykład wypełnienia pól na karcie Debug dla projektu w starym formacie:
- Start Action: Uruchom program zewnętrzny:
C:\Program Files\...\Resto.Front.Api.Host.exe. - Start Options: Argumenty wiersza poleceń:
/a="C:\Projects\Front.Api Sdk\Resto.Front.Api.SamplePlugin\bin\Debug\Resto.Front.Api.SamplePlugin.dll" /c=Resto.Front.Api.SamplePlugin.SamplePlugin /m=21005108 /l="C:\Projects\Front.Api Sdk\Logs\sample-plugin.log"
SDK-style .csproj
Dla nowego formatu projektu parametry debugowania zostały przeniesione do osobnego pliku launchsettings.json, który można utworzyć/edytować ręcznie lub za pomocą interfejsu: w właściwościach projektu Debug → Ogólne → Otwórz interfejs profili uruchamiania debugowania → Utwórz nowy profil → Wykonywalny. Przykład zawartości launchsettings.json:
{
"profiles": {
"Resto.Front.Api.SamplePlugin": {
"commandName": "Executable",
"executablePath": "C:\\Program Files\\...\\Front.Net\\Resto.Front.Api.Host.exe",
"commandLineArgs": "/a=\"C:\\Projects\\Front.Api Sdk\\Resto.Front.Api.SamplePlugin\\bin\\Debug\\Resto.Front.Api.SamplePlugin.dll\" /c=Resto.Front.Api.SamplePlugin.SamplePlugin /m=21005108 /l=\"C:\\Projects\\Front.Api Sdk\\Logs\\sample-plugin.log\""
}
}
}
Uwaga dla .NET Standard
Obecnie w Visual Studio istnieje błąd, który uniemożliwia debugowanie wtyczki pod .NET Standard przez uruchamianie jej za pomocą procesu-kontenera Resto.Front.Api.Host.exe, który działa pod .NET Framework.
Opcje rozwiązania:
- Kompilacja wtyczki pod .NET Framework
- Użycie Ridera lub innej platformy deweloperskiej, która nie ma tego błędu.
- Dodanie fikcyjnego projektu pod .NET Framework, ustawienie go jako projektu startowego i określenie tych samych parametrów debugowania co dla wtyczki. Więcej informacji tutaj.
Rider
JetBrains Rider może ustawić własne konfiguracje debugowania z polami Exe path i argumentami programu, a także używać formatu launchsettings.json kompatybilnego z Visual Studio.
Alternatywy
Jeśli nie ma licencji dewelopera wtyczek, konieczne będzie zainstalowanie wtyczki w folderze Plugins, aby aplikacja Syrve POS uruchomiła ją standardowo, ale za każdym razem po edycji wtyczki aplikacja musi zostać zatrzymana i ponownie uruchomiona. Aby zminimalizować niedogodności w takim przypadku, pomocne są następujące sposoby:
- W ustawieniach projektu Visual Studio na karcie
Buildw sekcjiOutputustawić jakoOutput pathścieżkę do podfolderu wtyczki w folderzePlugins. W efekcie wtyczka będzie publikowana do tego folderu po każdym kompilowaniu i nie będzie potrzeby kopiowania jej ręcznie. - Na początku konstruktora klasy wtyczki dodać wywołanie
Debugger.Launch(), aby uzyskać propozycję podłączenia debuggera. Oczywiście można też podłączyć go samodzielnie, wybierającDebug → Attach to Process, ale wymagałoby to więcej kliknięć, a ponadto trzeba by wybrać spośród kilku procesów-kontenerów o tej samej nazwie.