Estou trabalhando em uma biblioteca de classes C # que precisa ser capaz de ler as configurações do arquivo web.config
ou app.config
(dependendo se a DLL é referenciada em um aplicativo Web do ASP.NET ou em um aplicativo do Windows Forms).
Eu descobri isso
ConfigurationSettings.AppSettings.Get("MySetting")
funciona, mas esse código foi marcado como reprovado pela Microsoft.
Eu li que eu deveria estar usando:
ConfigurationManager.AppSettings["MySetting"]
No entanto, a System.Configuration.ConfigurationManager
classe não parece estar disponível em um projeto da Biblioteca de Classes em C #.
Qual é a melhor maneira de fazer isso?
c#
.net
configuration
appsettings
Russ Clark
fonte
fonte
Respostas:
Você precisará adicionar uma referência ao
System.Configuration
no de seu projeto pasta referências .Você definitivamente deveria estar usando
ConfigurationManager
o obsoletoConfigurationSettings
.fonte
Para um arquivo app.config de exemplo, como abaixo:
Você leu as configurações do aplicativo acima usando o código mostrado abaixo:
Você também pode precisar adicionar uma referência ao
System.Configuration
seu projeto, se ainda não houver uma. Você pode acessar os valores da seguinte maneira:fonte
Atualização para o .NET Framework 4.5 e 4.6; o seguinte não funcionará mais:
Agora acesse a classe Setting via Properties:
Consulte Gerenciando configurações do aplicativo para obter mais informações.
fonte
Clique com o botão direito na sua biblioteca de classes e escolha a opção "Adicionar referências" no menu.
E na guia .NET, selecione System.Configuration. Isso incluiria o arquivo DLL System.Configuration em seu projeto.
fonte
ConfigurationManager.ConnectionStrings[0].ConnectionString
Estou usando isso e funciona bem para mim:
fonte
Read From Config:
Você precisará adicionar uma referência à configuração:
Obtenha valor usando o seguinte código:
Salve na configuração:
fonte
Você deve adicionar uma referência ao assembly System.Configuration ao projeto.
fonte
Você pode estar adicionando o arquivo App.config a um arquivo DLL. App.Config funciona apenas para projetos executáveis, pois todos os arquivos DLL retiram a configuração do arquivo de configuração para o arquivo EXE que está sendo executado.
Digamos que você tenha dois projetos em sua solução:
Seu problema pode estar relacionado ao fato de você estar incluindo o arquivo app.config no SomeDLL e não no SomeExe. SomeDll é capaz de ler a configuração do projeto SomeExe.
fonte
Tente o seguinte:
No arquivo web.config, essa deve ser a próxima estrutura:
fonte
Eu tive o mesmo problema. Apenas leia-os desta maneira: System.Configuration.ConfigurationSettings.AppSettings ["MySetting"]
fonte
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
é usado com aplicativos da web.web.config
por padrão, possui várias configurações necessárias para o aplicativo da web. Você pode ter umweb.config
para cada pasta em seu aplicativo da web.app.config
é usado para aplicativos do Windows. Quando você cria o aplicativo no Visual Studio, ele é automaticamente renomeado<appname>.exe.config
e esse arquivo deve ser entregue junto com o aplicativo.Você pode usar o mesmo método para chamar os
app settings
valores dos dois arquivos de configuração: System.Configuration.ConfigurationSettings.AppSettings ["Key"]fonte
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
vez de usar colchetes.Como eu encontrei a melhor abordagem para acessar variáveis de configurações de aplicativos de maneira sistemática, criando uma classe de wrapper sobre System.Configuration como abaixo
Agora podemos acessar as variáveis de configuração necessárias por nomes codificados usando outra classe, como abaixo:
fonte
Eu recomendo fortemente que você crie um wrapper para esta chamada. Algo como ae
ConfigurationReaderService
use injeção de dependência para obter essa classe. Dessa forma, você poderá isolar esses arquivos de configuração para fins de teste.Portanto, use o
ConfigurationManager.AppSettings["something"];
sugerido e retorne esse valor. Com esse método, você pode criar algum tipo de retorno padrão se não houver nenhuma chave disponível no arquivo .config.fonte
app.DEBUG.config
,app.RELEASE.config
eapp.TEST.config
, etc.Além disso, você pode usar o Formo :
Configuração:
Código:
fonte
Apenas para completar, existe outra opção disponível apenas para projetos da web: System.Web.Configuration.WebConfigurationManager.AppSettings ["MySetting"]
O benefício disso é que ele não requer que uma referência extra seja adicionada, portanto pode ser preferível para algumas pessoas.
fonte
Etapa 1: Clique com o botão direito do mouse na guia referências para adicionar referência.
Etapa 2: clique na guia Assemblies
Etapa 3: procure por 'System.Configuration'
Etapa 4: Clique em OK.
Então vai funcionar.
fonte
Eu sempre crio uma interface IConfig com propriedades typesafe declaradas para todos os valores de configuração. Uma classe de implementação Config agrupa as chamadas para System.Configuration. Todas as suas chamadas System.Configuration agora estão em um só lugar, e é muito mais fácil e limpo manter e rastrear quais campos estão sendo usados e declarar seus valores padrão. Escrevo um conjunto de métodos auxiliares particulares para ler e analisar tipos de dados comuns.
Usando uma estrutura de IoC , você pode acessar os campos IConfig em qualquer lugar do seu aplicativo simplesmente passando a interface para um construtor de classe. Você também poderá criar implementações simuladas da interface IConfig em seus testes de unidade, para que agora possa testar vários valores de configuração e combinações de valores sem precisar tocar no arquivo App.config ou Web.config.
fonte
Outra solução possível:
fonte
Estou tentando encontrar uma correção para esse mesmo problema há alguns dias. Consegui resolver isso adicionando uma chave na tag appsettings no arquivo web.config . Isso deve substituir o arquivo .dll ao usar o auxiliar.
fonte
Você pode usar a linha abaixo. No meu caso, estava funcionando: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Você deve ter cuidado para que a linha de código acima também seja a versão antiga e seja preterida em novas bibliotecas.
fonte
O ConfigurationManager não é o que você precisa para acessar suas próprias configurações.
Para fazer isso, você deve usar
{YourAppName}.Properties.Settings.{settingName}
fonte
Consegui obter a abordagem abaixo trabalhando para projetos do .NET Core:
Passos:
Eu criei um método Login () para mostrar o uso da Classe de Configuração.
Crie appsettings.json no seu projeto com o conteúdo:
fonte
Se você precisa / deseja usar a
ConfigurationManager
classe ...Pode ser necessário carregar
System.Configuration.ConfigurationManager
pela Microsoft via NuGet Package ManagerDocs da Microsoft
Uma coisa que vale a pena notar nos documentos ...
fonte
Verifique a versão do .NET em que você está trabalhando. Deve ser maior que 4. E você precisa adicionar a biblioteca do sistema System.Configuration ao seu aplicativo.
fonte
Aqui está um exemplo:
App.config
fonte