app.config и 64-битные машины - PullRequest
8 голосов
/ 28 мая 2010

У меня есть приложение, которое отлично работает в 32-разрядных системах, но не работает в 64-разрядных системах XP. Я отследил его до строки подключения, определенной в моем app.config, таким образом:

  <connectionStrings>
    <clear/>
    <add name="IFDSConnectionString" 
        connectionString="Data Source=fdsdata;Initial Catalog=IFDS;
        Trusted_Connection=true;Connect Timeout=0"
        providerName="System.Data.SqlClient" />
  </connectionStrings>

Когда я пытаюсь сослаться на него в коде, я обнаружил, что коллекция ConfigurationManager.ConnectionStrings содержит только строку подключения LocalSqlServer из файла machine.config, а не мою пользовательскую строку.

Еще одна странность в том, что все работает нормально, когда я запускаю приложение из Visual Studio. Только когда я исчерпал папку выпуска, строка соединения не будет определена. Файл приложения .exe.config находится в папке выпуска вместе с файлом .exe и обновлен.

Ответы [ 2 ]

3 голосов
/ 28 мая 2010

Я в конце концов нашел объяснение здесь: http://social.msdn.microsoft.com/forums/en-US/clr/thread/c25cd2c0-653d-4890-97b8-d2c9ceda2949/

Короче говоря, это происходит при использовании файла манифеста для приложения. В этом случае фреймворк ищет application_name.config, а не application_name.exe.config. Один из обходных путей - переименовать файл конфигурации после сборки приложения. Другой способ - добавить узел assemblyIdentity в манифест. В моем собственном случае я смог просто удалить файл манифеста, и жизнь снова стала хорошей.

1 голос
/ 28 мая 2010

Добавить строку подключения в файл devenv.exe.config.

Это находится

Visual Studio 2010

$$ InstallLocation $$ \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.config

Visual Studio 2008

$$ InstallLocation $$ \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ devenv.exe.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...