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"
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)
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.
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
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>
- StartProgram: Der Pfad zum WHS-Test-Loader
- StartArguments: Der Name eureS Assemblys
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