Pergunta

Eu estou escrevendo um .dll C # .NET 2.0 que é um plug in para um maior aplicação . O projeto visual studio para o meu módulo tem um arquivo app.config que é copiado para um MyProj.dll.config ao lado de MyProj.dll.

O plano é que MyProj.dll.config será editada após a .dll é implantado. Eu estou tentando ler as minhas configurações a partir desse arquivo local modificado. Eu tentei puxar o LocalFilesSettingsObject e mudá-lo do nome do aplicativo para o meu .dll como esta:

        Properties.Settings config = Properties.Settings.Default;
        SettingsContext context = config.Context;
        SettingsPropertyCollection properties = config.Properties;
        SettingsProviderCollection providers = config.Providers;
        SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
        configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
        config.Initialize(context, properties, providers);
        config.Reload();

Isso não está funcionando. Eu estou lutando para envolver minha cabeça em torno de toda a confusão Configurações .NET. Eu gostaria de uma receita para concluir esta tarefa. Gostaria, também, um link para uma explicação clara (com exemplos) de como as configurações são supostamente para trabalhar em .NET 2.0

Foi útil?

Solução

Você vai precisar de carregar o x.dll.config (com a API de configuração) você mesmo. Toda a manipulação automática de arquivos (incluindo o .Settings) é tudo sobre machine.config / y.exe.config / user-configurações.

Para abrir um arquivo de configuração chamado:

  • System.Configuration.dll Referência montagem.
  • Usando System.Configuration
  • Criar um código como:

    Configuration GetDllConfiguration(Assembly targetAsm) {
      var configFile = targetAsm.Location + ".config";
      var map = new ExeConfigurationFileMap {
        ExeConfigFilename = configFile
      };
      return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    }
    

Outras dicas

1- arquivo app aberto no visual studio

2 na tag "configuração" adicionar suas configurações em "appSettings" tag como abaixo:

<configuration>
    <appSettings>
        <add key="UserName" value="aaa"/>
        <add key="Password" value="111"/>
    </appSettings>
</configuration>

3 em seu código c #

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;

e não se esqueceu de acrescentar este 2 usings para "ConfigurationManager" e para "Assembly"

  • using System.Configuration;
  • using System.Reflection;

Se o System.Configuration não mostrar, você deve adicionar o "System.Configuration" de referência nas referências

4 você pode atualizar as configurações para a DLL como abaixo:

  • abra o arquivo " MyProj.dll.config "
  • , em seguida, atualizar suas configurações
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top