Доступ к App.Config из исполняемого файла в проекте библиотеки классов.
Проект 1: Образец (исполняемый проект .exe)
Проект 2: Sample.Database (проект библиотеки классов .dll)
Проект 1 содержит app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<connectionStrings>
<clear />
<add name="Connection_Local" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\work\WF\ScaleCalibration\ScaleCalibration\AppData\db_local.mdf;Integrated Security=True;Connect Timeout=30" />
</connectionStrings>>
</configuration>
Проекту 2 необходим доступ к настройкам конфигурации ... Создайте следующие классы:
public class AssemblyConfiguration : MarshalByRefObject
{
public static string GetConnectionString(string name)
{
Assembly callingAssembly = Assembly.GetEntryAssembly();
var conStringCollection = ConfigurationManager.OpenExeConfiguration(callingAssembly.Location).ConnectionStrings;
return conStringCollection?.ConnectionStrings[name].ConnectionString;
}
}
Статический класс в dll Проект:
public static class DBConnection
{
public static string ConnectionStringLocal => AssemblyConfiguration.GetConnectionString("Connection_Local");
}
Использование в любом месте проекта библиотеки классов:
var xx = DBConnection.ConnectionStringLocal;
Если вы не хотите читать строку подключения при каждом вызове функции, создайте переменную-член в DBConnection и установите ее, когда она равна нулю, в противном случае верните ее.