Tenho um aplicativo WPF para desktop com .NET que tem 3 versões.
MyAppDev
MyAppPreProduction
MyAppProduction
As primeiras 2 versões são usadas por desenvolvedores para testar mudanças. A última é a versão de produção que é usada para distribuir usuários.
O MyAppDev se conecta ao servidor de desenvolvimento por meio url=devServerUrl
do constants.cs
código-fonte para que os desenvolvedores testem.
O MyAppPreProduction se conecta ao servidor de pré-produção por meio url=preprodServerUrl
do constants.cs
código-fonte para que os desenvolvedores testem antes da produção.
O MyAppProduction se conecta ao servidor de produção via url=prodServerUrl
código constants.cs
-fonte.
O problema é que os desenvolvedores às vezes esquecem de alterar esse parâmetro de url e a url de produção permanece no aplicativo de desenvolvimento. (MyAppDev) Então o desenvolvedor assume que está testando no servidor de desenvolvimento, mas na verdade ele está conectado ao servidor de produção e altera dados de produção valiosos. Isso causa problemas mais tarde para nós porque temos que corrigir os dados de produção mais tarde.
O que eu quero perguntar é: é possível definir apenas uma constante de URL no código-fonte para o repositório de todos os 3 aplicativos? (Assim, quando o desenvolvedor se esquece de alterar o parâmetro de URL, ele ainda se conectará à URL correta.)
Posso não entender realmente o que você está tentando fazer ou o que quer dizer com “versões” ou “agnóstico”, mas a maneira mais simples de fazer isso seria usar os símbolos
RELEASE
eDEBUG
que vêm predefinidos com os modelos de projeto padrão do Visual Studio. Então, eles provavelmente já estão lá. Você pode adicionar umaPREPROD
configuração de build e colocá-la em algum lugar do seu código (constants.cs
):Agora os desenvolvedores podem alternar na barra de ferramentas do VS antes de compilar:
[
Ao publicar via Visual Studio ou seu servidor de compilação, configure-o para que a configuração de compilação Release seja usada (este é o padrão).
Agora, a menos que você esteja enviando de
\bin\Debug\
, a versão de produção sempre terá a URL de produção.Parece que você está apenas codificando strings constantes, que é o que meu código acima mostra. Você pode querer carregar esses valores de configuração de um arquivo de configuração. Você pode usar o mesmo código acima para alternar entre
config.json
andconfig.debug.json
, ou lidar com isso de outra forma.