{"id":3275,"date":"2023-12-10T17:30:41","date_gmt":"2023-12-10T16:30:41","guid":{"rendered":"https:\/\/ictknow-how.ch\/blog\/?p=3275"},"modified":"2023-12-12T12:15:33","modified_gmt":"2023-12-12T11:15:33","slug":"wie-kann-man-bei-lidarr-beitragenein-ausfuehrlicheres-how-to-contribute","status":"publish","type":"post","link":"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/wie-kann-man-bei-lidarr-beitragenein-ausfuehrlicheres-how-to-contribute\/","title":{"rendered":"Wie kann man bei Lidarr beitragen?<br>Ein ausf\u00fchrlicheres \u00abHow to Contribute\u00bb"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wer gerne beim Open-Source-Projekt Lidarr mitmachen m\u00f6chte, der wird sicher schon die offizielle Wiki-Seite und den Abschnitt &#8222;<a href=\"https:\/\/wiki.servarr.com\/lidarr\/contributing\" data-type=\"link\" data-id=\"https:\/\/wiki.servarr.com\/lidarr\/contributing\" target=\"_blank\" rel=\"noreferrer noopener\">Lidarr Contributing<\/a>&#8220; gefunden haben. Leider ist deren Anleitung nur sehr oberfl\u00e4chlich und l\u00e4sst entscheidende Punkt aus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier folgt eine ausf\u00fchrlichere Variante, in der die wirklich wichtigen Schritte erkl\u00e4rt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wichtig ist die <strong>grunds\u00e4tzliche Unterscheidung<\/strong> ob man beim sogenannten <strong>Backend<\/strong> mit entwickeln will oder beim <strong>Frontend<\/strong> (oder bei beiden). <br>Das Backend ist in <code>C#<\/code> programmiert und enth\u00e4lt die ganze Logik die &#8222;hinten rum&#8220; abl\u00e4uft.<br>Das Frontend ist all das, was man im Browser sieht und bedient, also z.B. die Farben, Formen, Buttons, Eingabefelder. Das Frontend ist in <code>HTML<\/code> und <code>Javascript<\/code> programmiert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fangen wir mit dem einfacheren Teil, der Backend-Entwicklung an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Was braucht man um im <strong>Lidarr-Backend<\/strong> Ver\u00e4nderungen vorzunehmen?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um den <code>C#<\/code>-Code bearbeiten und ausf\u00fchrbar kompilieren zu k\u00f6nnen, braucht man eine Entwicklungsumgebung (eine sogenannte <a href=\"https:\/\/de.wikipedia.org\/wiki\/Integrierte_Entwicklungsumgebung\" target=\"_blank\" rel=\"noreferrer noopener\">IDE<\/a>). Ein bekanntes Beispiel daf\u00fcr ist das \u00abMicrosoft Visual Studio\u00bb. Das bekommt man in der Community-Edition kostenlos direkt beim Hersteller: <a href=\"https:\/\/visualstudio.microsoft.com\/de\/downloads\/\">https:\/\/visualstudio.microsoft.com\/de\/downloads\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach der Grundinstallation w\u00e4hlt man im \u00abVisual Studio Installer\u00bb einen sogenannten &#8222;Workload&#8220;. Das ist eine vorgew\u00e4hlte Sammlung von Tools, Einstellungen und Abh\u00e4ngigkeiten. F\u00fcr die Entwicklung von Lidarr w\u00e4hlen wir hier &#8222;.NET-Desktopentwicklung&#8220;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1024x534.png\" alt=\"\" class=\"wp-image-3279\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1024x534.png 1024w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-300x157.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-768x401.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image.png 1142w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Diese Einstellung kann man im \u00abVisual Studio Installer\u00bb nachtr\u00e4glich jederzeit anpassen.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ausserhalb des Visual Studios l\u00e4dt man sich von <a href=\"https:\/\/github.com\/Lidarr\/Lidarr\" data-type=\"link\" data-id=\"https:\/\/github.com\/Lidarr\/Lidarr\" target=\"_blank\" rel=\"noreferrer noopener\">Github im Projekt Lidarr<\/a> den kompletten Source-Code von Lidarr herunter. <br><em>(Wer jetzt einwendet, dass man das doch direkt und integriert aus dem Visual Studio heraus machen kann: Mit diesem Wissen wird man kaum diese Anleitung lesen&#8230;)<\/em><br>Dazu klickt man auf den sogenannten Branch &#8222;develop&#8220; (oder \u00e4ndert den Eintrag auf die &#8222;Verzweigung&#8220; mit diesem Namen), dann auf den gr\u00fcnen Button &#8222;Code&#8220; und daraus zuunterst auf &#8222;Download ZIP&#8220;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"492\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1-1024x492.png\" alt=\"\" class=\"wp-image-3281\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1-1024x492.png 1024w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1-300x144.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1-768x369.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-1.png 1354w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dieses heruntergeladene ZIP-File (rund 41 MB) entpackt man, z.B. direkt in das Standard-Code-Verzeichnis f\u00fcr Visual C# unter <code>%USERPROFILE%\\Documents\\Visual Studio 2022\\Code Snippets\\Visual C#<\/code>. Das entpackte ZIP-Archiv sollte ungef\u00e4hr so aussehen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"1024\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-3.png\" alt=\"Dieses Bild hat ein leeres Alt-Attribut. Der Dateiname ist image-2-518x1024.png\" class=\"wp-image-3283\" style=\"width:434px;height:auto\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-3.png 518w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-3-152x300.png 152w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-1 wp-block-paragraph\" style=\"color:#ff0000\"><em><strong>Hinweis zum automatisch erstellten Verzeichnisnamen Visual C# <\/strong><br>Das Sonderzeichen <strong>#<\/strong> im Verzeichnisnamen &#8222;\\Visual C<strong>#<\/strong>&#8220; f\u00fchrt bei der sp\u00e4teren Verwendung von <code>Yarn<\/code> zu Fehlermeldungen. Deshalb empfehle ich den Standard-Verzeichnisnamen den Visual Studio anlegt manuell auf z.B. &#8222;<code>\\Visual CS<\/code>&#8220; (f\u00fcr <strong>C<\/strong>&#8211;<strong>S<\/strong>harp) abzu\u00e4ndern.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dann klickt man in diesem lokalen Source-Code-Verzeichnis auf das Unterverzeichnis <code>\\src<\/code> und darin auf <code>Lidarr.sln<\/code>. Das l\u00e4dt einem s\u00e4mtliche ben\u00f6tigten Backend-Teile ins Visual Studio. Um nun z.B. die Windows-Variante kompilieren zu k\u00f6nnen &#8211; ohne auch nur die geringste \u00c4nderung am Code vorgenommen zu haben &#8211; wechselt man im gestarteten &#8222;Visual Studio 2022&#8220; die Projektmappen-Plattform von \u00abPosix\u00bb auf \u00abWindows\u00bb und das Startprojekt von \u00abLidarr.API.v1\u00bb auf \u00abLidarr\u00bb. Beim allerersten Laden der 25 Teilprojekte, dauert das vollautomatische nachladen von fehlenden NuGet-Paketen mehrere Minuten. Bitte warten bis unten in der Taskleiste keine solchen Eintr\u00e4ge mehr durchlaufen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"25\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2-1024x25.png\" alt=\"\" class=\"wp-image-3305\" style=\"width:819px;height:auto\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2-1024x25.png 1024w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2-300x7.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2-768x19.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2-1536x37.png 1536w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-2.png 1683w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Bei einer komplett neuen Visual Studio&#8211;Installation wird das .NET 6.0-Zielframework fehlen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"438\" height=\"168\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-4.png\" alt=\"\" class=\"wp-image-3306\" style=\"width:362px;height:auto\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-4.png 438w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-4-300x115.png 300w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb auf das blaue Wort &#8222;Installieren&#8220; klicken und den Abschluss der Installation abwarten. Meistens muss man dazu das Visual Studio selber schliessen, damit der separat gestartete \u00abVisual Studio Installer\u00bb das Zielframework herunterladen und konfigurieren kann:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"354\" height=\"188\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-6.png\" alt=\"\" class=\"wp-image-3312\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-6.png 354w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-6-300x159.png 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nach Abschluss der Zielframework-Installation kann man nun das neu ins Visual Studio geladene Projekt <code>Lidarr.sln<\/code> wie gewohnt \u00fcber den grossen gr\u00fcnen Debug-Button (=F5) starten.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/Visual-Studio-Debuggen-und-Aendern.png\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"100\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/Visual-Studio-Debuggen-und-Aendern.png\" alt=\"\" class=\"wp-image-3293\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/Visual-Studio-Debuggen-und-Aendern.png 698w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/Visual-Studio-Debuggen-und-Aendern-300x43.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nach etwa einer halben Minuten Kompilierungszeit landet man aber leider frustriert auf dem Boden der Realit\u00e4t: Es geht zwar ein Browser auf, aber darin sieht man nur eine lapidare 404-Fehlermeldung:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"645\" height=\"265\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-7.png\" alt=\"\" class=\"wp-image-3316\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-7.png 645w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-7-300x123.png 300w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/a><figcaption class=\"wp-element-caption\">404 not found Fehlermeldung wegen nicht bereitgestelltem Frontend<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das Backend versucht hier n\u00e4mlich das sichtbare Frontend im lokalen Browser aufzurufen. Dieses Frontend wurde aber noch gar nicht bereitgestellt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das erledigen wir im aufw\u00e4ndigeren <a href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/lidarr-wie-stellt-man-das-frontend-bereit\/\">zweiten Teil dieser Anleitung<\/a>.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;3275&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Wie kann man bei Lidarr beitragen?\\u0026lt;br\\u0026gt;Ein ausf\u00fchrlicheres \u00abHow to Contribute\u00bb&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wer gerne beim Open-Source-Projekt Lidarr mitmachen m\u00f6chte, der wird sicher schon die offizielle Wiki-Seite und den Abschnitt &#8222;Lidarr Contributing&#8220; gefunden haben. Leider ist deren Anleitung nur sehr oberfl\u00e4chlich und l\u00e4sst entscheidende Punkt aus. Hier folgt eine ausf\u00fchrlichere Variante, in der die wirklich wichtigen Schritte erkl\u00e4rt werden. Wichtig ist die grunds\u00e4tzliche Unterscheidung ob man beim sogenannten &#8230; <a title=\"Wie kann man bei Lidarr beitragen?Ein ausf\u00fchrlicheres \u00abHow to Contribute\u00bb\" class=\"read-more\" href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/wie-kann-man-bei-lidarr-beitragenein-ausfuehrlicheres-how-to-contribute\/\" aria-label=\"Mehr Informationen \u00fcber Wie kann man bei Lidarr beitragen?Ein ausf\u00fchrlicheres \u00abHow to Contribute\u00bb\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28,278],"tags":[283,282,279,284,285,277,280,281],"class_list":["post-3275","post","type-post","status-publish","format-standard","hentry","category-software","category-visual-studio","tag-c","tag-c-sharp","tag-entwicklung","tag-html","tag-javascript","tag-lidarr","tag-node-js","tag-yarn"],"_links":{"self":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts\/3275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/comments?post=3275"}],"version-history":[{"count":0,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts\/3275\/revisions"}],"wp:attachment":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/media?parent=3275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/categories?post=3275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/tags?post=3275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}