Para que servem os arquivos Web.Debug.config e Web.Release.Config?

111

Acabei de atualizar para o Visual Studio 2010 e MVC 2.0 e percebi que o Web.config tem dois arquivos adicionais anexados a ele. Esses arquivos são usados ​​para especificar configurações específicas de depuração e liberação, para que você não atravesse o Web.config principal?

Faz sentido colocar uma string de conexão no arquivo Web.config raiz se eu tiver um local e um remoto na depuração e liberar Web.configs respectivamente?

Obrigado!

chobo
fonte

Respostas:

97

É o novo recurso de transformação Web.config do Visual Studio 2010. Mais informações aqui .


Editar:

Esses arquivos são usados ​​para especificar configurações específicas de depuração e liberação, para que você não atravesse o web.config principal?

Não está limitado a três arquivos, você pode (em teoria) ter tantos arquivos quantos ambientes. O Web.config de "nível superior" fornece um modelo de sua configuração da web. Os arquivos sob ele fornecem valores de substituição específicos para aquele ambiente (por exemplo, se você tiver strings de conexão diferentes para local / estágio / teste / qualquer coisa).

Faz sentido colocar uma string de conexão no arquivo web.config raiz se eu tiver um local e remoto no debug e liberar web.configs respectivamente.

Só faria sentido se não fosse mudar entre os ambientes. Parece que no seu caso sim, no seu caso não, não faria sentido deixá-lo no Web.config.

R0MANARMY
fonte
12
Esse recurso está incompleto, mesmo 4 anos depois! Ele só funciona ao implantar em pacotes azure / publicação. Aqui está um tópico interessante: forums.asp.net/t/1532038.aspx
Nick
12

Esses são arquivos de transformações Web.config. De ASP.NET Web Deployment usando Visual Studio: Web.config File Transformations :

Existem duas maneiras de automatizar o processo de alteração das configurações do arquivo Web.config: transformações Web.config e parâmetros do Web Deploy. Um arquivo de transformação Web.config contém marcação XML que especifica como alterar o arquivo Web.config quando ele é implantado. Você pode especificar mudanças diferentes para configurações de construção específicas e para perfis de publicação específicos. As configurações de compilação padrão são Depurar e Liberar, e você pode criar configurações de compilação personalizadas. Um perfil de publicação normalmente corresponde a um ambiente de destino.

eKek0
fonte
1

Caso alguém esteja interessado, aqui está algo que escrevi para ter uma string de conexão dinâmica por ambiente. Eu queria implantar o código em qualquer ambiente (Dev, Test, Pre-Prod, Prod ...) sem ter que me preocupar em alterar as strings de conexão. Não consegui encontrar uma boa maneira de fazer isso com o Asp.Net MVC 4, então criei minha própria maneira de contar com um arquivo de propriedades por ambiente.

Pode haver uma solução melhor, eu venho de uma experiência em Wicket / Java e recentemente comecei a desenvolver com MVC 4, então, é possível que exista uma solução melhor. Mas aqui está um link para minha pergunta e resposta para uma string de conexão dinâmica:

String de conexão dinâmica Asp.net MVC 4

eaglei22
fonte
-3

Isso era algo muito necessário no VS. Infelizmente, parece haver um problema com a implementação. Por exemplo, considere este cenário (VS.2010 Ultimate, todos SP):

Web.Config

  • Sem seção connectionStrings
  • Membro Pleno Usuário / Função / etc. Configuração do provedor usando connectionStringName = "test"

Web.Release.Config

  • Sem configuração de associação (já especificada no web.config principal)
  • seção connectionStrings incluindo o CS chamado "teste"

Web.Debug.Config

  • Sem configuração de associação (já especificada no web.config principal)
  • seção connectionStrings incluindo o CS chamado "teste"

Ao executar o aplicativo dá o seguinte erro:

O nome da conexão 'teste' não foi encontrado na configuração dos aplicativos ou a string de conexão está vazia.

Em outras palavras, como os elementos da string de conexão estão nos arquivos do designer Release / Debug e são usados pelos elementos de configuração no arquivo principal (Web.config), não é possível resolvê-lo.

Emile
fonte
5
Para ser justo, se você tiver uma string de conexão nomeada testem seus arquivos de configuração de depuração e versão, ela realmente deve estar no web.config principal com as seções apropriadas modeladas. No estado em que se encontra, você está duplicando o código, algo que o modelo deve resolver para você.
R0MANARMY
3
-1: Este post muito antigo foi uma interpretação totalmente errada de como usar as transformações de configuração da web. 1 Na verdade não é uma resposta (apenas uma reclamação incorreta) e 2 não é uma simples fusão de elementos como está implícito aqui. Você deve ter xsltcomandos de substituição explícitos . Parabéns por conseguir 5 votos positivos para algo que aumenta a confusão sobre esses arquivos de transformação :)
Gone Coding