Ich schreibe ein Spiel in XNA 4 und diese Version hat zwei Profile in HD und Reichweite. Mein Problem ist, dass ich meinen Spielcode für jedes dieser Profile haben muss und es sehr unangenehm ist, zwei Projekte zu haben und alle Änderungen in beiden vorzunehmen. Meine Idee war, die Präprozessor-Direktive zu verwenden (ich bin mir über den Namen nicht sicher, http://msdn.microsoft.com/en-us/library/ed8yd1ha%28v=vs.71%29.aspx ) und die IF-Anweisung unter zu verwenden Orte mit Problemen mit dem Profil. Es gibt nur ein Problem, dass das Programm zweimal (für jedes Profil) kompiliert und die Direktiven- und Projekteinstellungen manuell in ein anderes Profil geändert werden müssen. Und meine Fragen sind: Ist das ein guter Weg? Gibt es eine bessere und sauberere Möglichkeit, dies zu tun?
7
Antworten:
Ich habe das zum Laufen gebracht, aber Sie müssen etwas MSBuild-Magie verwenden, um es zu tun. Ich empfehle Ihnen dringend, Ihr Projekt zu sichern, da Sie leicht etwas kaputt machen können, wenn Sie dies falsch machen.
Zuerst müssen Sie den Konfigurationsmanager (
ALT + B + O
) öffnen .Dann müssen Sie vier Build-Konfigurationen für Ihr Spielprojekt erstellen. Ich entschied mich für mein zu nennen
DebugReach
,ReleaseReach
,DebugHiDef
undReleaseHiDef
.Anschließend speichern Sie Ihr Projekt, klicken im Lösungs-Explorer mit der rechten Maustaste auf das Projekt und klicken dann auf
Unload Project
. Klicken Sie nun erneut mit der rechten Maustaste auf das Projekt und klicken Sie aufEdit <projectname>.csproj
. Dies ist die unformatierte MSBuild-Konfiguration Ihres Projekts.Im ersten
PropertyGroup
Knoten müssen Sie den untergeordneten KnotenXnaProfile
ann finden und dann die Zeile löschen. Als nächstes müssen Sie diePropertyGroup
Knoten finden, die so aussehen:<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugReach|x86' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseReach|x86' ">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugHiDef|x86'">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseHiDef|x86'">
In
DebugReach
undReleaseReach
fügen Sie den folgenden Knoten hinzu:<XnaProfile>Reach</XnaProfile>
In
DebugHiDef
undReleaseHiDef
fügen Sie den folgenden Knoten hinzu:<XnaProfile>HiDef</XnaProfile>
Danach speichern Sie die Datei, schließen sie, klicken mit der rechten Maustaste auf das Projekt und klicken auf Neu laden. Abhängig von der verwendeten Build-Konfiguration verwenden Sie jetzt entweder Debug oder HiDef. Bitte beachten Sie, dass das Öffnen
Properties
nicht den Unterschied widerspiegelt, Sie es jedoch beim Erstellen testen können.quelle