Estou escrevendo jogo no XNA 4 e esta versão tem dois perfis de alta definição e alcance. Meu problema é que preciso ter meu código de jogo para cada um desses perfis e é muito desconfortável ter dois projetos e fazer todas as alterações nos dois. Minha ideia era usar a diretiva pré-processador (não sei o nome disso, http://msdn.microsoft.com/en-us/library/ed8yd1ha%28v=vs.71%29.aspx ) e use a instrução IF em lugares com problemas com o perfil. Há apenas um problema em que o programa precisa ser compilado duas vezes (para cada perfil) e as configurações de diretiva e projeto alteradas manualmente para outro perfil. E minhas perguntas são: Isso é bom? Existe maneira melhor e mais limpa de como fazer isso?
7
Respostas:
Eu consegui isso funcionando, mas você precisa usar alguma mágica do MSBuild para fazer isso. Eu recomendo fortemente que você faça backup do seu projeto, pois você pode facilmente quebrar algo se fizer isso errado.
Primeiramente, você precisa abrir o gerenciador de configuração (
ALT + B + O
).Então você precisa criar quatro configurações de compilação para o seu projeto de jogo. Eu escolhi para citar o meu
DebugReach
,ReleaseReach
,DebugHiDef
eReleaseHiDef
.Depois de fazer isso, salve o projeto, clique com o botão direito do mouse no projeto no gerenciador de soluções e clique em
Unload Project
. Agora, clique com o botão direito do mouse no projeto novamente e clique emEdit <projectname>.csproj
. Essa é a configuração bruta do MSBuild do seu projeto.No primeiro
PropertyGroup
nó, você precisa encontrar o nó filhoXnaProfile
ann e excluir a linha. Em seguida, você precisa encontrar osPropertyGroup
nós parecidos com este:<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugReach|x86' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseReach|x86' ">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugHiDef|x86'">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseHiDef|x86'">
Em
DebugReach
eReleaseReach
você adiciona o seguinte nó:<XnaProfile>Reach</XnaProfile>
Em
DebugHiDef
eReleaseHiDef
você adiciona o seguinte nó:<XnaProfile>HiDef</XnaProfile>
Depois disso, salve o arquivo, feche-o, clique com o botão direito do mouse no projeto e clique em recarregar. Agora, dependendo da configuração de compilação usada, você usará Debug ou HiDef. Observe que a abertura
Properties
não reflete a diferença, mas você pode testá-la quando criar.fonte