Ответ 1
Самый простой способ, о котором я могу думать, - добавить флаг флага приложения "dummy", а затем проверить этот флаг, например:
if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["dummyflag"]))
{
//config file doesn't exist..
}
Есть ли способ узнать, существует ли файл app.config, не используя "File.Exists"? Я попробовал
if ( !ConfigurationManager.ConnectionStrings.ElementInformation.IsPresent )
{...}
но IsPresent является ложным, даже если app.config с строкой соединения существует.
Изменить: Я неправильно интерпретировал свойство IsPresent?
Самый простой способ, о котором я могу думать, - добавить флаг флага приложения "dummy", а затем проверить этот флаг, например:
if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["dummyflag"]))
{
//config file doesn't exist..
}
Отчет AppDomain
сообщает, где он ожидает, что файл конфигурации для приложения будет находиться. Вы можете проверить, действительно ли файл существует (без необходимости использовать фиктивные AppSettings, и не нужно пытаться выяснить, какой файл конфигурации должен быть вызван или где он находится):
public static bool CheckConfigFileIsPresent()
{
return File.Exists(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
}
Вы можете создать метод в статическом классе
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