Как определить, существует ли файл app.config

Есть ли способ узнать, существует ли файл app.config, не используя "File.Exists"? Я попробовал

if ( !ConfigurationManager.ConnectionStrings.ElementInformation.IsPresent )
{...}

но IsPresent является ложным, даже если app.config с строкой соединения существует.

Изменить: Я неправильно интерпретировал свойство IsPresent?

Ответ 1

Самый простой способ, о котором я могу думать, - добавить флаг флага приложения "dummy", а затем проверить этот флаг, например:

if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["dummyflag"]))
{
  //config file doesn't exist..
}

Ответ 2

Отчет AppDomain сообщает, где он ожидает, что файл конфигурации для приложения будет находиться. Вы можете проверить, действительно ли файл существует (без необходимости использовать фиктивные AppSettings, и не нужно пытаться выяснить, какой файл конфигурации должен быть вызван или где он находится):

public static bool CheckConfigFileIsPresent()
{
   return File.Exists(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
}

Ответ 3

Вы можете создать метод в статическом классе

public static class ConfigurationManagerHelper
{
    public static bool Exists()
    {
        return Exists(System.Reflection.Assembly.GetEntryAssembly());
    }

    public static bool Exists(Assembly assembly)
    {
        return System.IO.File.Exists(assembly.Location + ".config" )
    }
}

И затем используйте, где вы хотите

ConfigurationManagerHelper.Exists();  // or pass assembly