Доступ к другим проектам свойств app.config?

У меня есть два проекта в моем решении, для этого примера я буду называть их проектами A и B.

Ссылки Project B A. Может ли Project B получить доступ к свойствам app.config проекта A?

Я хочу получить доступ к строке ключа приложения в файле app.config.

string tfsUri = ConfigurationManager.AppSettings["TfsUri"];

Ответ 1

Это вообще не очень хорошая идея, поскольку вы вводите жесткие зависимости между проектами. Поэтому, если вы можете скопировать-вставить конфигурационное значение, это сделает ваши проекты самодостаточными (однако это приводит к дублированию значения конфигурации).

Вы также можете автоматизировать это, так что при создании проекта автоматически определяется конфигурационная зависимость.

Сказав это, есть другие варианты, и в каждом случае вы можете использовать что-то другое. Другие варианты:

Ответ 2

       var path = @"C:\Users\Stephen\source\repos\SensurityConfigurationTool\Configuration.UI\App.config";
        string directory = Path.GetDirectoryName(path);
        var pathRoot = Path.GetPathRoot(directory);
        string file = Path.GetFileName(path);


        ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap
        {
            ExeConfigFilename = Path.Combine(Path.GetFullPath(directory + "\\" + file))
        };

        System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

Вы в основном получаете относительный путь, а затем преобразуете его в абсолютный путь

Ответ 3

Вы не можете получить доступ к свойствам в Project A из Project B, не имея одинакового значения в файле конфигурации Project A.