HowTo - Entwicklung eines WHS Add-Ins

Eigener Bereich für die Entwickler unter uns! Add-Ins, aber auch andere Programme.
Antworten
gman.php
Foren-Einsteiger
Beiträge: 8
Registriert: 26. Nov 2007, 22:55

HowTo - Entwicklung eines WHS Add-Ins

Beitrag von gman.php »

Hiho Leute,

da ich mich auch schon was hier durchs Forum gefragt habe und mir die Informationen zusammensuchen musste, habe ich mir gedacht:
"Schreibste einfach mal ein HowTo für alle anderen, die da noch kommen werden!"
Und da der Bereich "Softwareentwicklung" hier noch leer ist, weihe ich den hiermit einfach mal ein! :)

Anmerkungen:
Ich habe mir einiges zusammengesucht und einiges selber herausgefunden. An manchen Stellen verweise ich auf Software-Stückchen (o.Ä.) von Dritten, dessen Namen ich aber angebe und in den Quell-Links ganz zum Schluss nochmals erwähne!



Einleitung:
Ich behandle in diesem How-To eine mögliche Entwicklungsumgebung und nicht "DIE richtige und perfekte" für den Einzelnen unter euch!
So verwende ich als IDE Microsft Visual Studio 2005. Wenn ihr eine andere bevorzugt (z.B. SharpDevelop) und mit der Umsetzung meiner Hilfen Probleme habt, kann ich euch da nicht helfen. Weiterhin habe ich sowohl vom WHS und VS die englische Version. Entschuldigt also bitte, wenn meine Übersetzung nicht immer mit der von Microsoft verwendeten übereinstimmt! :)
Ebenso verwende ich Windows. Auch hier kann ich euch bei anderen Betriebssystemen (z.B. Linux in Verwendung mit Mono) nicht behilflich sein.
Ich bin Windows-Mensch, kenne mich zwar mit Linux sehr gut aus (Als php- und Webentwickler unabkömmlich :) ), aber wer seinen eigenen Weg gehen möchte, soll sich auch die Steine selber aus dem Weg räumen können!
Weiterhin bringe ich euch nicht bei, wie man C# oder VB.NET programmiert, das müsst ihr schon selber mitbringen. Ich versuche lediglich euch den Einstieg zu erleichtern und die Umgebung einzurichten, die ihr benötigt!
Natürlich kann man auch in allen anderen .NET Sprachen ein Add-In schreiben, aber ich konzentriere mich hier auf C# und schneide VB.NET nur an.

So, nach diesem risiegen "So, ihr bösen Leute"-Block gehts dann mal los ;)

Was wird benötigt:
Microsoft .NET Framework 2.0 => Download hier
Microsoft Visual Studio 2005 (fortwährend "VS2005") oder Microsoft Visual Studio 2005 Express Editions (fortwährend "VSE") => VS2005 muss käuflich erworben werden, die Express Editions gibt es einzeln für die jeweiligen .NET-Sprachen hier
Windows Home Server SDK => Das SDK gibt es nicht wie andere SDKs als ein Installer-Paket, sondern es existiert als einzelne Datei-Struktur auf eurem WHS. Dazu gehören die Dateien 'Microsoft.HomeServer.SDK.Interop.v1.dll' und 'HomeServerExt.dll' im Verzeichnis 'C:\Program Files\Windows Home Server'. Dazu aber später mehr
Offizielle Dokumentation zum SDK => Die gibts hier
Optional:
Windows Home Server Add-In-Template => Erleichtert euch erheblich den Start in die Erstellung eines Add-Ins. Hier empfehle ich das C#- oder VB.NET-Template von Brendan Grant, der diese in seinem Blog "I hate Linux" veröffentlicht hat (Download C#-Template, Download VB.NET-Template).
WHS Test Loader => Erleichtert das Testen eines Add-Ins, indem es in eine fiktive WHS-Console geladen wird.

Installation der einzelnen Komponenten
.NET Framework 2.0 und Visual Studio .NET 2005 / Visual Studio 2005 Express Editions:
Da bleibt mir nicht viel mehr zu sagen, als => Folgt den Installationsanweisungen und installiert es dort, wo ihr möchtet.
Anmerkung: Ihr müsst nicht auf dem WHS entwicklen! Entwickelt wird auf eurem Client!
Windows Home Server SDK:
Das SDK besteht, wie bereits schon gesagt, nicht aus einem fertigen Installer zum Herunterladen aus dem Microsoft Download Center, sondern existiert als einzelne Datei-Strutur auf eurem WHS. Die MSDN-Dokumentation besagt zwar, dass es nur aus den beiden Dateien 'Microsoft.HomeServer.SDK.Interop.v1.dll' und 'HomeServerExt.dll' besteht, aber wie auch Brendan Grant in seinem Blog sagt, so rate ich euch auch, einfach das ganze Verzeichnis zu ziehen, da sich dort noch mehr nützliche Controls finden lassen.
Am einfachsten zieht ihr euch die Datein einfach per Netzwerk rüber, die da liegen im Verzeichis
C:\Programme\Windows Home Server
Da dieser Ordner nicht freigegeben ist, müsst ihr euch als Administrator am WHS anmelden und auf die gloable C$ Freigabe zugreifen. Das macht ihr am einfachsten über
Start => Ausführen
und gebt dort ein:
\\EuerServerName\C$
Gebt als Benutzer 'Administrator' ein und als Passwort euer WHS-Administrator-Passwort.
Hinweis: Wenn die Verbindung fehlschlagen sollte, weil sich Windows in der Art beschwert wie "Verbindungen zu einer Ressource unter Verwendung mehrerer Benutzernamen nicht möglich", habt ihr noch Verbindungen offen zum Server. Um diese zu sehen und zu löschen, öffnet die Konsole über
Start => Ausführen
und gebt dort
cmd
ein. In der Konsole könnt ihr über
net use
euch die aktuellen Verbindungen anzeigen lassen und mittels
net use /delete *
und einer Bestätigung mit "J" löscht ihr diese. Schließt das Konsolenfenster und versucht die oben genannten Schritte erneut.

Kopiert die Dateien an einen beliebigen Ort. Am Besten machen sie sich aber da, wo auch die anderen Libraries/Assemblies liegen und zwar bei VS2005 unter
C:\Programme\Microsoft Visual Studio 2005\Common7\IDE\PublicAssemblies
und bei VSE standardmäßig unter
C:\Programme\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies
Macht dort doch einfach einen neuen Ordner (z.B. Windows Home Server) und kopiert den ganzen Inhalt des oben genannten Server-Ordners dort rein.
Leider reicht das nicht, um die Assemblies auch in Visual Studio im "Add Reference"-Dialog (zu deutsch "Verweis hinzufügen") sehen zu können. Dafür muss erst noch ein Registry-Eintrag her. Kopiert einfach den unten stehenden Code in einen Texteditor, passt notfalls die Zeile mit dem Pfad ("@=...") eurem an und speichrt die Datei als *.reg ab.
Achtung: Der Pfad muss (wie im Beispiel unten) immer mit Doppel-Backslashes geschrieben werden!

Code: Alles auswählen

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Windows Home Server]
@="C:\\Programme\\Microsoft Visual Studio 2005\\Common7\\IDE\\PublicAssemblies\\Windows Home Server"
Beim Speichern darauf achten, dass mann den Namen in Anführungszeichen packt, da sonst daraus datei.reg.txt wird. Also schreibt "datei.reg" (Mit den Anführungszeichen) in das Feld für den Dateinamen und ihr habt eine Registry-Datei.
Führt diese Datei nun einfach aus und ihr habt den nötigen Registry-Eintrag, um die Assemblies sehen zu können eingefügt!
Wenn Ihr nun Visual Studio öffnet (Wenn es während der oberen Aktionen offen war => schließen und nochmal aufmachen) und bei einem bestehen Projekt den "Add Reference"-Dialog aufmacht (Rechtsklick auf den Programmnamen im Projekt-Browser), solltet ihr einige Controls sehen, die mit "WindowsHomeServer" anfangen, z.B. "WindowsHomeServerEx".
Windows Home Server Add-In-Template:
Ein Projekt-Template erleichtert euch die Erstellung eines neuen Add-Ins in sofern, dass es euer Projekt schon mit einigem vorgefertigten Klassengerüst ausstattet, nötige Refernzen hinzufügt und vordefinierte Einstellungen beinhaltet (Z.B. für den Compiler).
Wenn ihr euch das Template unter dem oben genannten Link heruntergeladen habt, packt es nicht aus (so wie ich es zuerst gemacht habe und mich dann wunderte, weshalb Visual Studio es nicht findet...), sondern packt es in den Projekt-Template-Ordner (bei VS2005 und VSE) unter:
Eigene Dateien\Visual Studio 2005\Templates\ProjectTemplates\<Sprache>
wo <Sprache> entweder "Visual C#" oder "VB.NET" sein kann.
Öffnet nun Visual Studio (wenn ihr es schon offen hattet => schließen und neu öffnen) und erstellt ein neues Projekt. Wenn ihr auf die Sprache links klickt (Nur für VS2005-Nutzer), sollte dort nun unter "My Templates" (zu deutsch: "Meine Vorlagen") das "Home Server Add-in" erscheinen, mit dem ihr nun munter einsteigen und ein neues Projekt anlegen könnt. Leider gibt es einen kleinen Bug bei den Templates in Visual Studio:
Wenn man aus einem Template ein Projekt erstellt, wird leider der Assemblyname überschrieben. Also müsst ihr diesen wieder neu anpassen, damit der WHS euer Add-In auch findet.
Macht dafür einen Rechtsklick im Projektbrowser auf den Programmnamen und klickt auf "Eigenschaften". In der Kategorie "Anwendung" schreibt ihr vor den Namen eures Projekts noch den Namespace "HomeServerConsoleTab.", womit dann dort etwas stehen sollte wie "HomeServerConsoleTab.MeinProjekt", wobei "MeinProjekt" der Name eures Projekts ist.

Klassen- und Formulareinführung:
Was hab ich denn jetzt genau da in meinem Projekt?
Es wurden schon ein paar Verweise hinzugefügt, die man unterhalb von "References" (zu deutsch "Verweise") sehen kann. Der wichtigste für uns ist hier wohl der "HomeServerExt", der uns die Klassen zur Verfügung stellt, um den WHS mit einem Add-In zu erweitern.
Weiterhin sind 4 Source-Files enthalten, 2 davon mit einer Form:
  • HomeServerSettingsExtender
  • HomeServerTabExtender
  • MainTabUserControl (Form)
  • SettingsTabUserControl (Form)
Die ersten Beiden könnt ihr eigentlich in Ruhe lassen. "HomeServerSettingsExtender" fügt einen Eintrag zum Settingsmenü der WHS-Konsole hinzu und "HomeServerTabExtender" fügt einen neuen Tab in der WHS-Konsole ansich hinzu. Das Einzige, was ihr ändern solltet ist bei der Eigenschaft "TabText" den Anzeigetext des Tabs.
Bei den letzten Beiden könnt ihr wie gewohnt eure Form designen und Code hinzufügen!

Kompilieren und Testen:
Ohne auch nur eine Änderung an dem vom Template erzeugten Projekt zu machen, solltet ihr dieses fehlerfrei kompilieren können. Kompilieren könnt ihr euer Add-In auch wie gewohnt über (Shift+)F5 in der Debug oder Release-Konfiguration.
Euer Visual Studio wird sich zwar mit einer Fehler melden, der aber nur besagt, dass er das Projekt als DLL kompiliert hat (ebenfalls eine Voreinstellung, die das Template für euch gemacht hat) und es damit nicht ausführbar ist. Diesen Fehler kann man also getrost ignorieren.
"Aber wie teste ich mein Add-In nun??", wird man sich nun fragen. Naja, es gibt drei Wege:
  • Kopiert das Add-In einfach auf euren WHS in das Verzeichnis, wo ihr auch die Assemblies herhabt:
    C:\Programme\Windows Home Server
    Nach einem Neustart der WHS-Konsole sollte euer Add-In zu sehen sein.
    Das ist zwar lästig, aber der einfachste Weg, ohne weiteres Konfigurieren
  • Der nächste wäre einfach den Ausgabepfad für alle verfügbaren Kompilier-Konfigurationen (Debug, Release, etc.) für dieses Projekt zu ändern. Dies erfordert jedoch auch, dass ihr das zuvor genannte Verzeichnis als Netzlaufwerk anbindet:
    Wählt nach einem Rechtsklick auf euren Arbeitsplatz die Option "Netzlaufwerk verbinden" aus und gebt dort als Ziel folgendes an:
    \\EuerServerName\C$\Programme\Windows Home Server
    Der Laufwerksbuchstabe, an den ihr das Verzeichnis bindet, ist euch frei überlassen. Nutzername ist wie auch zuvor "Administrator" und das Passwort euer WHS-Administrator-Passwort.
    Wenn etwas nicht klappt, lest den Hinweistext unterhalb von "Installation der einzelnen Komponenten => Windows Home Server SDK".
    Nach der Anbindung macht ihr in Visual Studio einen Rechtsklick auf den Programmnamen im Projektbrowser und wählt "Properties" (zu deutsch: "Eigenschaften"). Unter "Build" wählt ihr bei "Configurations" den Punkt "All Configurations" aus und tragt bei "Output Path" den Laufwerksbuchstaben ein, an den ihr das WHS-Verzeichnis eures Servers gebunden habt (Z.B. "Z:\").
    Ab jetzt kompiliert Visual Studio eure DLL immmer sofort auf den Server und ihr müsst nurnoch die WHS-Konsole neu starten.
  • Der dritte Weg ist ein Tool von Brendan Grant, dass euer Add-In in eine fiktive WHS-Konsole lädt (Den Download-Link findet ihr oben). Weitere Infos im nächsten Punkt.
Der WHS-Test-Loader:
Ladet das Tool herunter und legt es dort ab, wo ihr auch die ganzen Assemblies vom WHS hinkopiert habt. Wenn Ihr das Programm öffnet, sehr ihr drei Reiter:
  • Main: Enthält die Ansicht eures Add-Ins in der Konsole
  • Settings: Enthält die Ansicht in den Konsolen-Einstellungen
  • Additional Tools: Enthält Tools, die Brendan mit der Zeit erweitern will. Zurzeit befinden sich hier nur die Icons, die sich in der "WHSCommon.dll" befinden
Wenn Ihr nun über "LoadAssembly" eure kompilierte DLL ladet, könnt ihr damit herumtesten.
Immer das Programm öffnen und laden ist aber auch lästig, deswegen kann man gleich beim Kompilieren es von Visual Studi öffnen lassen. Da die Express-Versionen etwas eingeschränkt sind, hier zwei seperate Erklärungen:
Visual Studio 2005:
Macht einen Rechtsklick auf euren Programmnamen im Projekt-Browser und wählt den Reiter "Debug" aus. Wählt bei der "Start Action" den Punkt "Start external Program" aus und wählt als Programm den WHS-Test-Loader aus. Unter "Start Options" tragt ihr bei "Command line arguments" noch den Namen eures Assemblys (mit anschließendem ".dll") ein und speichert das Ganze.
Wenn ihr euer Projekt nun wie gewohnt mit F5 kompiliert, wird das Add-In sofort in den WHS-Test-Loader geladen.
Visual Studio Express:
Wie gesagt, ist die Express Version eingeschränkt, jedoch nur in der Benutzung. Selber herumfrickeln geht immernoch :)
Wir brauchen ein User-Options-File, dass wir uns per Hand erstellen müssen. Öffnet dazu einen Texteditor eurer Wahl und fügt dort folgenden XML-Code ein:

Code: Alles auswählen

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <StartAction>Program</StartAction>
    <StartProgram>C:\Programme\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies\Windows Home Server\WhsTestLoader.exe</StartProgram>
    <StartWorkingDirectory>
    </StartWorkingDirectory>
    <StartArguments>HomeServerConsoleTab.blub.dll</StartArguments>
  </PropertyGroup>
</Project>
Anpassen müsst ihr zwei Werte und zwar unterhalb von:
  • StartProgram: Der Pfad zum WHS-Test-Loader
  • StartArguments: Der Name eureS Assemblys
Speichert die Datei unter dem Namen der Projektdatei im selben Verzeichnis mit dem Zusatz ".user" ab. Also z.B. "MeinProjekt.csproj.user" oder "MeinProjekt.vbproj.user".
Wenn ihr euer Projekt nun nochmal neu öffnet und wie gewohnt mit F5 kompiliert, wird das Add-In sofort in den WHS-Test-Loader geladen.


Soweit erstmal von mir! Bei Gelegenheit werde ich den Thread noch ein wenig erweitern, z.B. um die Tipps, die Brendan Grant in seinem Blog gibt. Diese werde ich dann hier genauer und in deutsch beschreiben.

Ich hoffe diese Einführung erleichtert euch den Start in die Add-In-Entwicklung und ich wünsche euch nun viel Spaß und postet eure Ergebnisse brav hier im Forum!
Gerne könnt ihr hier auch Fragen stellen, die ich (oder auch andere) gerne beantworten werde.

Schöne Grüße,

gman.php!

Quellangaben:
Mein Kopf und Einfalssreichtum :) => Zu erreichen hier im Forum ;)
Brendan Grant => http://www.brendangrant.com/
"I hate Linux Blog" von Brendan Grant => http://ihatelinux.blogspot.com/
MSDN Dokumentation zum WHS SDK => http://msdn2.microsoft.com/en-us/library/bb743248.aspx

History:
  • Hinweis zum Assemblynamen (Danke an "x-shell")
  • Erklärung des WHS-Test-Loaders von Brendan Grant
Zuletzt geändert von gman.php am 5. Dez 2007, 17:46, insgesamt 1-mal geändert.
Mein WHS:
CPU: Intel Core2Duo E4500 2x2200MHz
Board: ASRock ConRoe1333-D667
RAM: Corsair DDR2 Kit 2x1024MB 667MHz
HDDs: 3x 500GB Samsung sATA II 16MB
+ Gehäuse (inkl. 420Watt Netzteil) + DVD-Laufwerk ≈ 500€ (Muss also nich teuer sein!)
x-shell
Foren-Einsteiger
Beiträge: 1
Registriert: 3. Dez 2007, 10:44

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von x-shell »

Hallo gman.php,

danke erstmal für diese richtig gute Anleitung - das hat mir einen guten Einstieg für die Add-Ins gegeben! :D

Unter "MS Visual Basic 2008 Express Edition" ist es noch zwingend notwendig, dass man in den "Projekteinstellungen" den "Assembly Name" auf "HomeServerConsoleTab.********" (eigenen Projektnamen hier einsetzen) ändert.

Der "Root namespace" muss "Microsoft.HomeServer.HomeServerConsoleTab.*******" lauten - war aber bei mir schon gesetzt.

Dank dem Tool "WhsTestLoader.exe" von Brendan Grant kann man die Add-Ins noch schneller testen.
Dafür kopiert man dieses Tool in den Ordner, wo auch die "HomeServerExt.dll" usw. liegen.
Danach startet man das Tool und klickt auf "Load Assembly" und übergibt die erstellte Add-In DLL-Datei.
Nach wenigen Sekunden kann man schon eine "simulierte" WHS-Konsolen Oberfläche sehen und grundlegende Funktionen testen.

Gruß
x-shell
gman.php
Foren-Einsteiger
Beiträge: 8
Registriert: 26. Nov 2007, 22:55

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von gman.php »

Hiho,

weswegen sollte denn der Assemlyname so aussehen? Bei mir (Sowohl in C# als auch in VB.NET) ist das einfach nur der Projektname. Kompilieren lässt es sich einwandfrei.
EDIT
Ok, sonst gibts nen Fehler vom Test-Loader, schon klar. Bei C# ist es genauso. Da war es aber nicht von selber eingestellt.

Jo, auf das Tool von Brendan Grant wollte ich noch eingehen, hab es aber nisher nicht geschafft. Werde es aber noch hinzufügen :)

Greetz,

gman!
Mein WHS:
CPU: Intel Core2Duo E4500 2x2200MHz
Board: ASRock ConRoe1333-D667
RAM: Corsair DDR2 Kit 2x1024MB 667MHz
HDDs: 3x 500GB Samsung sATA II 16MB
+ Gehäuse (inkl. 420Watt Netzteil) + DVD-Laufwerk ≈ 500€ (Muss also nich teuer sein!)
cwaidner
Foren-Einsteiger
Beiträge: 3
Registriert: 18. Jan 2008, 17:39

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von cwaidner »

Hi!

Danke für den Thread, das hat bei der Erstellung des ersten Projekts doch deutlich geholfen.

Zwei Anmerkungen hab ich noch:

Wenn man den WHS-Test-Loader mit der Express-Edition einsetzen mag, aber schon an den Projekteinstellungen herumgespielt hat, sollte man sich bewusst sein, dass man durch ein komplettes ersetzen des ...proj.user diese Einstellungen verliert. Alternativ kann man natürlich das bestehende File öffnen und die von dir gelisteten Zeilen hereineditieren, funktioniert problemlos.

Ich habe das ganze mit VS 2008 probiert und festgestellt, dass ich dort als Zielplattform unbedingt das Framework 2.0 anwählen muss. Der Default war bei mir 3.5 und das Resultat, dass weder der WHS-Test-Loader noch der HomeServer die .dll laden wollten. Also darauf achten und unter Project Properties ->Advanced Compiler Settings das richtige wählen.

Gruß,
Chris
LaLinea
Foren-Einsteiger
Beiträge: 4
Registriert: 16. Jan 2009, 22:28

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von LaLinea »

Hallo zusammen,

die Anleitung ist hervorragend. Leider sind mir bis dato noch zwei Punkte nicht geglückt, obwohl ich der Meinung bin, dass ich alles richtig gemacht habe:
1. Registry-Eintrag
Ich nutze VS 2005 und dieses wurde unter "Microsoft Visual Studio 8" installiert. Also lautet mein REG-Eintrag wie folgt:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Windows Home Server]
@="C:\\Program Files (x86)\\Microsoft Visual Studio 8\\Common7\\IDE\\PublicAssemblies\\Windows Home Server"
Trotz des Eintrags sehe ich bei Verweise keine Einträge unter .NET die entweder mit HomeServer oder WindowsHomeServer beginnen.
Hat jemand eine Idee?

2. WHSTester
Ich habe die entsprechenden Einträge in der VS2005-Umgebung gemacht. Der WHSTester wird auch aufgerufen, allerdings mit leerem Tab. Kompilierer ich das Tab und deplye es auf den Homeserver, wird es korrekt angezeigt. Der WHSTester ist im gleichen Verzeichnis wie die Assemblies oben.
Vielleicht hat auch hier jemand eine Idee.

Viele Grüße
LaLinea
Benutzeravatar
Martin
Moderator
Beiträge: 9947
Registriert: 11. Sep 2007, 10:51
Wohnort: Im wilden Süden

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von Martin »

Der Pfad im Regeintrag muss auf das Verzeichnis zeigen in dem die WHS Assemblies liegen!
Ich nehme mal nicht an, dass du die ins Installationsverzeichnis von VS2005 kopiert hast.

Sind denn die referenzierten Assemblies für den Testloader sichtbar? Am besten den Testloader in das Verzeichnis mit den WHS Assemblies kopieren, Pfad dann siehe oben.

Gruß
Martin
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
LaLinea
Foren-Einsteiger
Beiträge: 4
Registriert: 16. Jan 2009, 22:28

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von LaLinea »

Hallo Martin,

vielen Dank für Deine schnelle Antwort. Ich habe das gesamte Verzeichnise c:\Programme\Windows Home Server des WHS unter den Pfad gemäß
C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies\Windows Home Server
kopiert. Die Dateien 'Microsoft.HomeServer.SDK.Interop.v1.dll' und 'HomeServerExt.dll' liegen auch dort.
Deshalb dachte ich, dass ich mit dem Regeintrag
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Windows Home Server]
@="C:\\Program Files (x86)\\Microsoft Visual Studio 8\\Common7\\IDE\\PublicAssemblies\\Windows Home Server"
genau richtig liege. Leider finde ich unter Verweis hinzufügen keinen Eintrag.

Der WHSTestLoader ist ebenfalls im gleichen (oben aufgeführten) Verzeichnis und startet mit einer Fehlermeldung:
Die Datei oder Assembly HomeServerExt, Version=1.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35 oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
Noch eine Idee?

Gruß
LaLinea
Benutzeravatar
Martin
Moderator
Beiträge: 9947
Registriert: 11. Sep 2007, 10:51
Wohnort: Im wilden Süden

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von Martin »

C:\Program Files (x86)
Es wurde versucht, eine Datei mit einem falschen Format zu laden.
Kann es sein dass du unter x64 entwickelst? Dann hast du leider Pech (ich spreche aus Erfahrung).

Hintergrund sind die von den .NET Framework Assemblies aus aufgerufenen COM Komponenten des WHS.
Auf deinem Entwicklungsrechner hast du den 64Bit Connector installiert. Die von diesem benötigten COM-Komponenten sind deshalb auch 64Bit Versionen.
Leider sind das aber nur eine Teilmenge der vom WHS verwendeten Assemblies und COM-Komponenten.

Und die 32Bit Versionen des WHS selber können keine 64Bit COM Komponenten aufrufen und umgekehrt.
Du kannst zwar das Add-In auf dem x64 Rechner kompilieren aber nur auf einer 32Bit Maschine mit dem Testloader testen.

Gruß
Martin
Essentials 2016 unter Windows Server 2022 auf HP Microserver Gen 8.
Entwickler von Lights-Out
HelmiMUC
Foren-Mitglied
Beiträge: 226
Registriert: 20. Jan 2012, 19:20

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von HelmiMUC »

Hallo,

nachdem ich jetzt einen C# - Kurs hinter mir hab, hab ich mir Visual Studio 2012 Express geladen und das "HowTo" mal ausprobiert.
Nachdem ich auf Framework 2.0 umgeschalten habe, seh ich auch (eine bislang leeres) Add-in in der Home-Server-Konsole.

Nur, wenn ich den WHSTestLoader lade, dann erhalte ich eine Fehlermeldung (WhsTestLoader Fehler1.jpg)
Lade ich eine Dll, so erhalte ich eine zweite Fehlermeldung (WhsTestLoader Fehler2.jpg) und das Add-in wird nicht geladen.

Ist der WhsTestLoader für die neuere Generation von WHS nicht mehr lauffähig?

[Edit]
Da der Quellcode auch frei zugänglich war, hab ich den jetzt neu compiliert und jetzt funktionierts
Dateianhänge
WhsTestLoader Fehler1.jpg
WhsTestLoader Fehler1.jpg (216.2 KiB) 38069 mal betrachtet
WhsTestLoader Fehler2.jpg
WhsTestLoader Fehler2.jpg (121.07 KiB) 38069 mal betrachtet
mfg
Helmi

-----------------------------------------------------------------------------------
QNAP TS-431K Version QTS 5.0.1

abgeschaltet: Acer H431 HomeServer mit Windows Home Server V1
HelmiMUC
Foren-Mitglied
Beiträge: 226
Registriert: 20. Jan 2012, 19:20

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von HelmiMUC »

Hallo,

wenn ich meine erstellte DLL auf den WHS spiele, dann sehe ich meine Forms.
Überhalb des MainTabs ist in der WHS-Konsole eine blaue Leiste, in der z. B. bei LightsOut der "Über" Button drin ist.
Wie kann ich solche Buttons mit dem Template erstellen?
mfg
Helmi

-----------------------------------------------------------------------------------
QNAP TS-431K Version QTS 5.0.1

abgeschaltet: Acer H431 HomeServer mit Windows Home Server V1
HelmiMUC
Foren-Mitglied
Beiträge: 226
Registriert: 20. Jan 2012, 19:20

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von HelmiMUC »

Hallo,

ich möchte nochmal nachfragen:
wie kann ich mit dem Template solche Buttons in der "blauen" Leiste erstellen?
Dateianhänge
Unbenannt.PNG
Unbenannt.PNG (28.64 KiB) 33553 mal betrachtet
mfg
Helmi

-----------------------------------------------------------------------------------
QNAP TS-431K Version QTS 5.0.1

abgeschaltet: Acer H431 HomeServer mit Windows Home Server V1
Benutzeravatar
Nobby1805
Moderator
Beiträge: 21372
Registriert: 6. Jun 2009, 17:40
Wohnort: Essen

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von Nobby1805 »

probiere mal die HomeServerControls.dll hinzuzufügen .... bei mir in VS 15: Extras > Choose Toolbox Items > Durchsuchen und dann nach der DLL suchen und OK ... danach kommen jede Menge zusätzliche Controls (Version 6.0.0.0 als WHS v1) die aber leider von der Beschreibung etwas knapp sind ... man muss ausprobieren welche man benötigt, z.B. kriegt man mit ConsoleToolBar oben so einen blauen Container hin ...

Edit: ich wollte mich immer schon mal mit dem Thema AddIns und VS beschäftigen .. jetzt hatte ich einen Grund dazu ;)
Hier was ich nach ein paar Stunden installieren und testen hinbekommen habe (sehr quick und sehr dirty :) )
Dateianhänge
addin.PNG
addin.PNG (9.62 KiB) 33444 mal betrachtet
HelmiMUC
Foren-Mitglied
Beiträge: 226
Registriert: 20. Jan 2012, 19:20

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von HelmiMUC »

Danke für den Tip!
hab die Datei hinzugefügt und hab jetzt die WHS-Komponenten
mfg
Helmi

-----------------------------------------------------------------------------------
QNAP TS-431K Version QTS 5.0.1

abgeschaltet: Acer H431 HomeServer mit Windows Home Server V1
HelmiMUC
Foren-Mitglied
Beiträge: 226
Registriert: 20. Jan 2012, 19:20

Re: HowTo - Entwicklung eines WHS Add-Ins

Beitrag von HelmiMUC »

Hallo,
hat schon mal jemand dieses HowTo in VisualStudio 2022 einbinden können?

Update:
Ich hab alles einbinden können, nur bekomme ich die Datei: "HomeServerControls.dll" nicht installiert.
Als Fehlermeldung erhalte ich immer die Meldung:

---------------------------
Microsoft Visual Studio
---------------------------
Die Datei "D:\Windows Home Server\HomeServerControls.dll" ist ungültig.
---------------------------
OK
---------------------------
mfg
Helmi

-----------------------------------------------------------------------------------
QNAP TS-431K Version QTS 5.0.1

abgeschaltet: Acer H431 HomeServer mit Windows Home Server V1
Antworten