Код вроде
using System.Configuration;
...
class Program
{
static string appconfigfile = "myprogram.exe.config";
static Configuration config = ConfigurationManager.OpenExeConfiguration(appconfigfile);
static string server = config.AppSettings["ServerName"];
Не работает, вызов config.AppSettings невозможен из-за
Ошибка 1 "System.Configuration.ConfigurationElement.this[string]" недоступен из-за его уровня защиты
Просто хочу в командной строке передавать в опциях имя файла конфигурации и чтобы работать с ним также как до этого было ConfigurationManager.AppSettings и т.п.
В msdn ничего такого, написано "Открывает указанный файл конфигурации клиента в качестве объекта Configuration." про метод OpenExeConfiguration
Здравствуйте, Michael7, Вы писали:
M>Не работает, вызов config.AppSettings невозможен из-за
config.AppSettings.Settings. Угу, тёмное наследие первого фреймворка.
Только учитывайте, что appconfig — отличный способ заинжектить произвольный код в ваш процесс, к примеру, через
<configSections>
<section name="BadSection" type="BadType, BadAssembly"/>
</configSections>
<BadSection SomeProperty=1 />
Не, в большинстве случаев это из тех способов атаки, которые Реймонд Чен
мягко называет сомнительными.
Во-первых, надо каким-то чудом разместить сборку так, чтобы её видело приложение. Во-вторых, приложение должно явно перебирать config.Sections или обращаться к BadSection по имени. Но знать про такой момент всё-таки лучше, чеми не знать.