O que é o App.config no C # .NET? Como usá-lo?

179

Eu fiz um projeto em C # .NET em que meu arquivo de banco de dados é uma pasta de trabalho do Excel. Como a localização da cadeia de conexão é codificada em minha codificação, não há problema em instalá-la no meu sistema, mas em outros sistemas existe.

Existe uma maneira de solicitar ao usuário que defina um caminho uma vez após a conclusão da instalação do aplicativo?

As respostas que obtive foram "Use App.Config" ... alguém pode dizer o que é esse App.config e como usá-lo no meu contexto aqui?

shyam
fonte
4
possível duplicata de O que é o app.config?
user

Respostas:

190

Na sua forma mais simples, o app.config é um arquivo XML com muitas seções de configuração predefinidas disponíveis e suporte para seções de configuração personalizadas. Uma "seção de configuração" é um trecho de XML com um esquema destinado a armazenar algum tipo de informação.

As configurações podem ser definidas usando seções de configuração internas, como connectionStrings ou appSettings. Você pode adicionar suas próprias seções de configuração personalizadas; este é um tópico avançado, mas muito poderoso para criar arquivos de configuração fortemente tipados.

Os aplicativos da Web geralmente têm um web.config, enquanto os aplicativos de GUI / serviço do Windows têm um arquivo app.config.

Os arquivos de configuração no nível do aplicativo herdam as configurações dos arquivos de configuração global, por exemplo, o machine.config.

Lendo a partir do App.Config

As cadeias de conexão têm um esquema predefinido que você pode usar. Observe que esse pequeno trecho é na verdade um arquivo app.config (ou web.config) válido:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Depois de definir seu app.config, você pode lê-lo no código usando a classe ConfigurationManager . Não se deixe intimidar pelos exemplos detalhados do MSDN; é realmente muito simples.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Escrevendo no App.Config

A alteração frequente dos arquivos * .config geralmente não é uma boa ideia, mas parece que você deseja executar apenas uma configuração.

Consulte: Alterar a cadeia de conexão e recarregar app.config em tempo de execução, que descreve como atualizar oconnectionStrings seção do arquivo * .config em tempo de execução.

Observe que, idealmente, você executaria essas alterações de configuração a partir de um instalador simples.

Local do App.Config no tempo de execução

P : Suponha que eu altere manualmente algumas <value>no app.config, salve-o e feche-o. Agora, quando vou para a pasta bin e inicio o arquivo .exe a partir daqui, por que não reflete as alterações aplicadas?

R : Quando você compila um aplicativo, seu app.config é copiado no diretório bin 1 com um nome que corresponde ao seu exe. Por exemplo, se o seu exe foi nomeado "test.exe", deve haver um "text.exe.config" no diretório bin. Você pode alterar a configuração sem recompilar, mas precisará editar o arquivo de configuração que foi criado no momento da compilação, não o app.config original.

1: Observe que os arquivos web.config não são movidos, mas permanecem no mesmo local no momento da compilação e implantação. Uma exceção a isso é quando um web.config é transformado .

.NET Core

Novas opções de configuração foram introduzidas com o .NET Core. A maneira como os arquivos * .config funcionam não parece ter mudado, mas os desenvolvedores podem escolher novos paradigmas de configuração mais flexíveis.

Tim Medora
fonte
Veja também: codeproject.com/Articles/16466/... para uma grande visão geral de como configuração arquivos de trabalho
BKSpurgeon
56

Simplesmente, App.config é um XMLformato de arquivo baseado que contém as configurações no nível do aplicativo .

Exemplo:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Você pode acessar as configurações usando ConfigurationManagercomo mostrado no trecho de código abaixo:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Nota: ConfigurationSettings é um método obsoleto para recuperar informações de configuração.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];
Furqan Safdar
fonte
21
Você precisa fazer referência System.Configuration.dllpara usar as APIs mencionadas acima.
KFL
2
Por um lado, você não deve armazenar cadeias de conexão na seção AppSettings, elas vão na seção ConnectionStrings. Para dois, o Visual Studio gerará fortes propriedades digitadas para suas configurações, se você as criar adequadamente por meio do designer, nunca será necessário digitar um nome de chave manualmente (como no código acima).
BrainSlugs83
1
Não estamos falando das melhores práticas aqui, mas da solução do problema do OP.
Furqan Safdar
2
System.Configuration.ConfigurationManager.AppSettings["Key"]já é uma string, chamando ToString()-a é redundante.
Bogdan Stăncescu
4

Apenas para adicionar algo que estava faltando em todas as respostas - mesmo que pareça bobo e óbvio assim que você souber:

O arquivo deve ser nomeado "App.config" ou "app.config" e pode estar localizado no seu projeto no mesmo nível que, por exemplo, Program.cs.

Não sei se outros locais são possíveis, outros nomes (como application.conf, conforme sugerido na documentação do ODP.net) não funcionaram para mim.

PS. Comecei com o Visual Studio Code e criei um novo projeto com "dotnet new". Nenhum arquivo de configuração é criado neste caso, tenho certeza de que existem outros casos. PPS. Pode ser necessário adicionar um pacote nuget para poder ler o arquivo de configuração. No caso do .NET CORE, seria "dotnet add package System.Configuration.ConfigurationManager --version 4.5.0"

Dantel35
fonte
era isso que eu estava procurando. Precisava saber em que nível incluí-lo. Alguns programas / estruturas parecem em pastas como/resources
alex
3

App.Config é um arquivo XML usado como arquivo de configuração para seu aplicativo. Em outras palavras, você armazena dentro dela qualquer configuração que queira alterar sem precisar alterar o código (e recompilar). É frequentemente usado para armazenar cadeias de conexão.

Veja este artigo do MSDN sobre como fazer isso.

Sistema caiu
fonte
1

Você pode acessar as chaves no App.Config usando:

ConfigurationSettings.AppSettings["KeyName"]

Dê uma olhada neste tópico

CloudyMarble
fonte
16
é considerado obsoleto agora
mikus 30/10
0

Apenas adicionando mais um ponto

Usando app.config, de alguma forma, como você pode controlar o acesso ao aplicativo, você deseja aplicar alterações específicas a todo o aplicativo, usando o arquivo de configuração do aplicativo e pode acessar as configurações como abaixo ConfigurationSettings.AppSettings ["Key"]

Gummadidala Shiva
fonte