Как я выбираю файл конфигурации приложения .NET из параметра командной строки?

Неопределенные символы для архитектуры x86_64: «_OBJC_CLASS _ $ _ xxx», на которые ссылается: objc-class-ref в yyy.o

Это обычно означает, что вы вызываете «xxx» "(это может быть каркас или класс) из класса" yyy ". Компилятор не может найти «xxx», чтобы произошла эта ошибка.

Вам нужно добавить отсутствующие файлы (в данном случае «xxx»), щелкнув правой кнопкой мыши по папке проекта в окне навигатора и коснитесь «Добавить файлы в» YourProjectName "" вариант.

Всплывающее окно откроет ваши файлы проекта в Finder. Там вы можете увидеть недостающие файлы и просто добавить их в свой проект. Не забудьте проверить флажок «Копировать предметы в случае необходимости». Удачи !!

16
задан dasblinkenlight 28 January 2014 в 20:20
поделиться

5 ответов

Таким образом, вот код, который на самом деле позволяет мне, на самом деле получают доступ к разделу appSettings в файле конфигурации кроме по умолчанию.

ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = Path.Combine(Environment.CurrentDirectory, "Alternate.config");
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile,ConfigurationUserLevel.None);

AppSettingsSection section = (AppSettingsSection)config.GetSection("appSettings");
string MySetting = section.Settings["MySetting"].Value;
14
ответ дан 30 November 2019 в 22:18
поделиться

Пакетный файл, который копирует Ваш желаемый конфигурационный файл в appname.exe.config и затем выполняет appname.exe.

3
ответ дан 30 November 2019 в 22:18
поделиться

Я должен был сделать это для моего приложения также, и контакт со стандартными объектами конфигурации превратился в такую чертовски' стычку для такого простого понятия, что я пошел этим путем:

  1. Сохраняют несколько файлов конфигурации в формате XML подобными Загрузке app.config
  2. указанным файлом конфигурации в DataSet (через.ReadXML) и используют Таблица данных с информацией о конфигурации в нем как мой объект Конфигурации .
  3. , Таким образом, весь мой код просто имеет дело с Таблица данных Конфигурации для получения значений и не, который craptastically запутал объект конфигурации приложения.

затем я могу передать в любом имени файла конфигурации, в котором я нуждаюсь на командной строке и если Вы не там - просто загружают app.config в DataSet.

Jeezus это было sooo намного более простой после этого. :-)

Ron

1
ответ дан 30 November 2019 в 22:18
поделиться

Это не точно, на что Вы желаете... перенаправить фактическое ConfigurationManager статический объект для указания на другой путь. Но я думаю, что это - правильное решение Вашей проблемы. Проверьте OpenExeConfiguration метод на ConfigurationManager класс.

, Если вышеупомянутый метод не то, что Вы ищете, я думаю, что это также стоило бы смотреть на использование поддержка Конфигурации из платформы Библиотеки Предприятия (разработанный и сохраняемый Microsoft Patterns & команда Методов).

Конкретно смотрят на FileConfigurationSource класс.

Вот некоторый код, который выделяет использование FileConfigurationSource от [1 112] Библиотека Предприятия , я полагаю, что это полностью удовлетворяет Вашим целям. Единственный блок, в котором Вы нуждаетесь от Lib Ent для этого, Microsoft.Practices.EnterpriseLibrary.Common.dll.

static void Main(string[] args)
{
    //read from current app.config as default
    AppSettingsSection ass = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).AppSettings;

    //if args[0] is a valid file path assume it's a config for this example and attempt to load
    if (args.Length > 0 && File.Exists(args[0]))
    {
        //using FileConfigurationSource from Enterprise Library
        FileConfigurationSource fcs = new FileConfigurationSource(args[0]);
        ass = (AppSettingsSection) fcs.GetSection("appSettings");
    }

    //print value from configuration
    Console.WriteLine(ass.Settings["test"].Value);
    Console.ReadLine(); //pause
}
1
ответ дан 30 November 2019 в 22:18
поделиться

Это соответствующая часть источника для приложения, которое использует конфигурацию по умолчанию и принимает переопределение через командную строку:

Получить текущую или пользовательскую конфигурацию в объекте конфигурации

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
string defCfgName = Environment.GetCommandLineArgs()[0] + ".config";

if (arg.Length != 0)
{
    string ConfigFileName = arg[0];
    if (!File.Exists(ConfigFileName))
        Fatal("File doesn't exist: " + ConfigFileName, -1);                
    config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = ConfigFileName }, ConfigurationUserLevel.None);
}
else if (!File.Exists(defCfgName)) Fatal("Default configuration file doesn't exist and no override is set." , -1);

Использовать объект конфигурации

AppSettingsSection s = (AppSettingsSection)config.GetSection("appSettings");
KeyValueConfigurationCollection a = s.Settings;
ConnectionString = a["ConnectionString"].Value;
1
ответ дан 30 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: