У меня есть приложение, которое хорошо работает в 32-разрядных системах, но перестало работать в системах XP 64 битов. Я разыскал его к строке подключения, определенной в моем 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 файлом и актуален.
В конце концов я нашел объяснение здесь: http://social.msdn.microsoft.com/forums/en-US/clr/thread/c25cd2c0-653d-4890-97b8-d2c9ceda2949/
Короче , это происходит при использовании файла манифеста для приложения. В этом случае фреймворк ищет application_name.config, а НЕ application_name.exe.config. Один из способов решения проблемы - переименовать файл конфигурации после сборки приложения. Другой - добавить в манифест узел assemblyIdentity. В моем случае я смог просто удалить файл манифеста, и жизнь снова стала хорошей.
Добавьте строку подключения в файл 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