как определить, существует ли файл app.config - PullRequest
12 голосов
/ 14 марта 2011

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

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

, но IsPresent имеет значение false, даже если app.config со строкой подключения существует.

Редактировать: я неверно истолковал свойство IsPresent?

Ответы [ 3 ]

19 голосов
/ 04 октября 2013

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

public static bool CheckConfigFileIsPresent()
{
   return File.Exists(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
}
9 голосов
/ 14 марта 2011

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

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
4 голосов
/ 14 марта 2011

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

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