Я узнал о пользовательских конфигурациях с помощью ConfigurationManager.По какой-то причине вы должны использовать ссылку на сборку в элементе section файла app.config, иначе ConfigurationManager не загрузит app.config.Но в приложении ASP.NET это работает нормально.Почему?
Рассмотрим этот пользовательский класс конфигурации:
namespace CustomConfiguration
{
class MySection : ConfigurationSection
{
[ConfigurationProperty("link", IsKey = true)]
public string Link
{
get => (string) this["link"];
set => this["link"] = value;
}
}
}
Используя этот app.config, я легко могу получить атрибут ссылки myCustomSection в моей программе:
<configuration>
<configSections>
<section name="myCustomSection" type="CustomConfiguration.MySection, myAssembly" />
</configSections>
...
<myCustomSection link="link i can access in my code" >
</myCustomSection>
</configuration>
Удаление ссылки на сборку в элементе раздела app.config приведет к исключению ConfigurationErrorsException, поскольку ConfigurationManager не может загрузить мой класс CustomConfiguration.MySection в его собственную сборку System.Configuration.Например:
<section name="myCustomSection" type="CustomConfiguration.MySection" />
Но Документация Microsoft говорит, что я должен быть в состоянии сделать это.И на самом деле я могу сделать это в приложении ASP.NET.Отсутствие указания имени сборки в атрибуте типа для раздела все еще работает, и system.configuration волшебным образом выглядит в правильной сборке приложения.Зачем?