KommentareZu den KommentarenLetzte Kommentare| Glatzemann | 29.06.2011 14:51:21 | Ja, Late-Binding 
Das mit den FileExtensions ist kein Problem... In dem Moment muss halt auch geladen werden Könnte man aber so implementieren, daß wenn er einen passenden gefunden hat halt nicht weitersucht... |
| SilentWarrior | 29.06.2011 14:48:36 | | Hm... meinst du mit Lazy-Binding Late-Binding? Ansonsten wüsste ich nicht was gemeint ist. Wenn dem so ist, meinst du es so, dass wenn man in der Liste mit den verfügbaren Importern/Exportern wählt, dass dann erst die ganzen Eigenschaften/Attribute geladen werden? Dann würde es allerdings Probleme beim automatischen Erkennen der jeweiligen Prozessoren/Importer kommen, da dort ja die jeweiligen Fileextensions ja bereits geladen sein müssten... |
| Glatzemann | 25.06.2011 23:58:22 | Ja, genau so habe ich mir das vorgestellt 
GAC durchsuchen macht glaube ich keinen Sinn, da sind zuviele Libs drin... Ein Pfad sollte schon ok sein, evtl. noch den der Calling-Assembly... |
| SilentWarrior | 25.06.2011 19:01:39 | Also geht es quasi darum, eine Lib bereitzustellen, welche es ermöglicht ein Contentprojekt zu erstellen bzw. zu manipulieren, korrekt? Das mit der XNA-Prüfung ist dafür ja mehr oder weniger Vorraussetzung.
Bei der Sache mit den automatisch erkannten Importern/Prozessoren ohne HC-Pfade, soll man da denn einen Pfad angeben können oder soll der GAC durchsucht werden?
Ansonsten hast du schon eine Idee zum Aufbau? Ansonsten würde ich vorschlagen, dass es eine mehr oder weniger "zentrale" Klasse "ContentProject" gibt, welche die meisten der Methoden aufnimmt (Vielleicht bis auf das Überprüfen). Die Klasse kann dann z.B. eine Funktion "SaveAs" haben mit der das ContentProject dann als XML/contentproj gespeichert wird. |
| Glatzemann | 25.06.2011 11:46:57 | Ich hatte mir gedacht, daß dies etwas für Entwickler sein soll, also ohne GUI oder so. Schlicht und einfach nur eine Assembly, die ein paar Möglichkeiten zum Umgang mit Content-Projekten bietet. Ich dachte da z.B. an:
- Prüfung ob XNA installiert ist (inkl. Version)
- Prüfung ob MSBuild installiert ist (inkl. Version)
- Ermittlung ob XNA als Developer-Runtime oder Redistributable installiert ist (da ab XNA 4.0 im Redist keine Content-Pipeline Build-Time enthalten ist)
- Erzeugung eines leeren Content-Projekts
- Enumerierung aller ContentImporter und ContentProcessors ohne hart kodierte Pfade etc. (zusätzlich eigene ContentPipeline-Extensions einbindbar)
- Hilfsmethode zum hinzufügen eines Content-Items zum Content-Projekt inkl. automatischer Ermittlung des notwendigen Processors und Importers
- Enumerierung aller Eigenschaften/Parameter/Attribute für die Content-Processor
- Content-Projekt um Referenzen erweitern, die für die enthaltenen Content-Importer bzw. Processor notwendig sind
Alles weitere, wie z.B. das Kompilieren des Content-Projekts ist meiner Meinung nach ein anderes Thema, daß wieder sehr speziell ist und für das es ja auch schon Lösungen gibt, wie z.B. Visual Studio oder auch deinen Content-Compiler. Im Endeffekt geht es mir schlicht und einfach darum, daß ich in eine Content-Projekt ein ProjectItem mit korrekten Werten hinzufügen kann und zur Editierung dieser Werte entsprechende Wertlisten habe.
Ist nicht viel und grundsätzlich ja auch nicht so schwer... Das ganze ist halt ein wenig "frickelig" und teilweise recht langsam (z.B. das scannen der Attribute). Es macht da z.B. Sinn, daß man eine Art Lazy-Binding der Eigenschaften macht, sprich diese werden erst geladen, wenn sie wirklich benötigt werden, dann aber zwischengespeichert.
Ich würde da z.B. die MS-RL Lizenz auf Codeplex vorschlagen. MS-RL ist eine anerkannte Open-Source-Lizenz und erfordert, daß bei Änderung an den Dateien der Quelltext mit dem Programm veröffentlich werden muss. Es ist aber nicht so restriktiv wie GPL und LGPL. Kompatibilität mit Windows-Phone oder XBox ist ja uninteressant, da das Developer-Runtime von XNA ja eh nur unter Windows läuft und da sind solche "offenen" Lizenzen kein Problem... |
|