Bei einer HoloLens App handelt es sich zum Teil um ein Unity Projekt und zum Teil um ein Visual Studio Projekt. Diese gehören genau wie bei anderen Projekten unter Source Control. Doch was genau muss eingecheckt werden? In diesem Teil der Blog-Serie soll geklärt werden, wie ein HoloLens-Projekt aufgebaut ist und was davon eingecheckt werden muss.
Ordnerstruktur
Um die Ordnerstruktur zu erklären, nehmen wir uns als Beispiel den Galaxy Explorer von Microsoft. Gehostet auf GitHub besitzt er bereits eine gitignore-Datei, um irrelevante Dateien herauszufiltern. Interessant ist dies, da wir hier einen direkten Vergleich haben, wie sich die Ordnerstruktur verändert, sobald wir das Projekt zum ersten Mal öffnen und builden. Für den Build wurde in Unity als Platform Windows Store ausgewählt mit dem Universal 10 SDK und D3D als UWP Build Type. Der Buildoutput wurde in den Ordner App nach Microsoft-Vorbild geschrieben.
Galaxy Explorer: Ordnerstruktur vor und nach dem erstem Build
App / UWP
Der App-Ordner wird beim Build in Unity angelegt. Innerhalb dieses Ordners liegen alle Dateien, um das Unity-Projekt mit Visual Studio als Marketplace UWP-App zu kompilieren. In der darunter liegenden Visual Studio Solution können somit keine Anpassungen mehr an den Assets wie z.B. den C#-Skripten gemacht werden. Dies geschieht direkt in Unity oder in der separat dafür angelegten Visual Studio Solution im Hauptordner.
Da alles innerhalb des App-Ordner beim Build generiert wird, sollte dies auch nicht mit in die Source Control. Wer seine UWP-App für den Windows Store konfigurieren möchte, findet alle Einstellungen der Package.appxmanifest ebenfalls in Unity (Build Settings –> Windows Store –> Player Settings).
Der UWP-Ordner ist ein Nebenprodukt und beinhaltet die NuGet-Paketkonfiguration der UWP-App.
Assets
Im Assets-Ordnet befindet sich alle Assets, die in Unity über den Asset-Manager erstellt und hinzugefügt werden können. Dies beinhalten z.B. alle 3D-Modelle, Shader oder C#-Skripte. Der Assets Ordner ist zentral für das Unity-Projekt und beinhaltet jeglichen Content einer HoloLens-App. Aus diesem Grund sollte dieser auch eingecheckt werden. Das schöne daran ist, dass die Visual Studio Projekte und auch das Unity Projekt auf die gleichen Assets verweisen. Somit können die C#-Skripte in Visual Studio angepasst werden, während Unity die Änderungen mitbekommt.
Library / obj / Temp
Der Library-Ordner wird von Unity generiert und befüllt. Dieser beinhaltet vorkompilierte Assets wie z.B. Shader oder C#-Skripte und dient somit als eine Art File Cache. Den obj-Ordner kennen viele aus dem Visual Studio Umfeld. Dieser beinhaltet die Binaries für die kompilierten C#-Skripte. Bei dem Ordner Temp spricht der Name schon für sich. Alle drei Ordner sollten nicht eingecheckt werden.
ProjectSettings
Alle Einstellungen im Unity Projekt werden im ProjectSettings-Ordner abgespeichert. Dabei wird als Format YAML (Yet another markup language) verwendet, wodurch ein Vergleich von Änderungen an den Projekteinstellungen einfach möglich ist.
Dadurch ergeben sich zwei Ordner, die in die Source Control eingecheckt werden sollten: Assets und ProjectSettings.
Ignore-Dateien
Das GitHub-Projekt gitignore gibt eine erste Anlaufstelle, denn hier werden für unterschiedliche Technologien und Editoren gitignore-Dateien gesammelt, die alle irrelevanten Dateien der entsprechenden Projekte herausfiltern. Hier gibt es bereits für Unity und auch für Visual Studio eine gitignore-Datei. Da sich die Syntax zwischen gitignore für Git und tfignore für den TFS nicht sonderlich unterscheidet, kann man auch gitignore-Dateien für den TFS verwenden.
Die Visual Studio gitignore-Datei ist sehr ausführlich, wobei das meiste nicht benötigt wird. Hier reicht es aus, den App-Ordner und den UWP-Ordner zu ignorieren. Wer auf der Suche nach einem guten Zwischenweg ist, der kann auch die gitignore-Datei des Galaxy Explorer verwenden. Diese findet man im GitHub-Projekt hier.
Wollen Sie mehr über HoloLens erfahren, dann sprechen Sie uns an oder kommen Sie am 14.09.2016 zu uns nach Stuttgart auf’s Holodeck.