Eu fiz um projeto em C#.NET onde meu arquivo de banco de dados é uma pasta de trabalho em Excel. Como a localização da string de conexão é codificada na minha codificação, não há problema para instalá-la no meu sistema, mas para outros sistemas existe.
Existe alguma forma de solicitar ao usuário que defina um caminho uma vez após a configuração da aplicação ter sido concluída?
As respostas que recebi foram "Use App.Config"... qualquer um pode dizer o que é esta App.config e como usá-la no meu contexto aqui?
Em sua forma mais simples, o app.config é um arquivo XML com muitas seções de configuração pré-definidas disponíveis e suporte a seções de configuração personalizadas. A "configuration section" é um snippet de XML com um esquema destinado a armazenar algum tipo de informação.
As configurações podem ser configuradas utilizando seções de configuração incorporadas, tais 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 a construção de arquivos de configuração fortemente digitados.
As aplicações web normalmente têm um web.config, enquanto as aplicações GUI/serviço do Windows têm um ficheiro app.config.
Os arquivos de configuração em nível de aplicação herdam as configurações dos arquivos de configuração global, por exemplo, o machine.config.
As cadeias de ligação têm um esquema pré-definido que pode ser utilizado. Note que este pequeno snippet é na verdade um ficheiro 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>
Uma vez que você tenha definido seu app.config, você pode lê-lo em código usando a classe ConfigurationManager. Don'não se deixe intimidar pelos exemplos verbosos de MSDN; it's na verdade é bem simples.
string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;
Mudar frequentemente os ficheiros *.config normalmente não é uma boa ideia, mas parece que só se quer fazer uma única configuração.
Veja: https://stackoverflow.com/q/502411/453277 que descreve como atualizar a seção connectionStrings
do arquivo *.config em tempo de execução.
Note que, idealmente, você faria tais alterações de configuração a partir de um simples instalador.
Q: Suponha que eu mude manualmente algum <value>
em app.config, salve-o e depois feche-o. Agora quando eu for para minha pasta bin e lançar o arquivo .exe daqui, porque ele não't reflete as alterações aplicadas?
A: Quando você compila uma aplicação, seu app.config é copiado para o diretório bin1 com um nome que combina com seu exe. Por exemplo, se seu exe foi nomeado "test.exe", deve haver um "text.exe.config" no seu diretório bin. Você pode alterar a configuração sem recompilar, mas você precisará editar o arquivo de configuração que foi criado em tempo de compilação, não o app.config original.
1: Note que os arquivos web.config não são movidos, mas permanecem no mesmo local em tempo de compilação e implantação. Uma exceção a isto é quando um web.config é transformado.
Novas opções de configuração foram introduzidas com .NET Core. A forma como os arquivos *.config funcionam não parece ter mudado, mas os desenvolvedores estão livres para escolher novos paradigmas de configuração, mais flexíveis.
App.Config é um arquivo XML que é usado como um arquivo de configuração para a sua aplicação. Em outras palavras, você armazena dentro dele qualquer configuração que possa querer alterar sem ter que alterar o código (e recompilar). Ele é frequentemente usado para armazenar cadeias de caracteres de conexão.
Veja este artigo MSDN sobre como fazer isso.
Você pode acessar as teclas no App.Config usando:
ConfigurationSettings.AppSettings["KeyName"]
Veja este tópico.