У меня есть простое приложение WinForms, которое в конечном итоге станет игрой. Прямо сейчас, я просто работаю над уровнем доступа к данным, и я столкнулся с проблемой. Я создал отдельный проект под названием DataAccess
, и внутри этого я создал локальный файл базы данных SQL Server. Я также создал файл app.config
для хранения строки соединений.C# ConfigurationManager извлекает неправильную строку соединения из app.config
Вот что конфигурационный файл:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="TBG_Master"
connectionString="Data Source=(localdb)\MSSQLLocalDb;Integrated Security=true;AttachDbFileName=|DataDirectory|\TBG_Master.mdf"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
Чтобы получить строку подключения из файла app.config я использую код извлекается из this вопроса.
Assembly service = Assembly.GetExecutingAssembly();
ConnectionStringsSection css = ConfigurationManager.OpenExeConfiguration(service.Location).ConnectionStrings;
string cs = css.ConnectionStrings["TBG_Master"].ConnectionString;
return cs;
Когда он попадет в линию, где он тянет строку соединения, используя строку в качестве ключа, он дает мне пустое ссылочное исключение. После изучения css.ConnectionString
коллекции, единственная строка подключения имеет в нем выглядит следующим образом:
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
Это явно не то, что он находится в моем app.config
файле, и я знаю, что нет никакого другого app.config
файла в моем DataAccess
проекте , Также после отладки я знаю, что он смотрит в правильную сборку.
Почему это дает мне эту строку подключения, а не правильную?
Строка подключения должна существовать в проекте *, который выполняет *, а не проекты библиотеки: например. он должен быть в вашем приложении app.config проекта Winforms. – Amy
Ohhhhhhhhhhhhhhhhhhhh хорошо, тогда это имеет смысл. Я изменяю свой код и отчитываюсь, если он работает :) –
app.configs в библиотеках для справки или для инструментов времени компиляции. Но во время выполнения учитывается только файл app.config исполняющего проекта. – Amy