运行应用程序时出现InvalidArgumentException。我正在尝试创建一个新的ExeConfigurationFileMap,然后使用ConfigurationManager加载它。
public static ExeConfigurationFileMap configFile = new ExeConfigurationFileMap(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\QuikSnap\\QuikSnap.config");
public static Configuration config = ConfigurationManager.OpenMappedExeConfiguration(Settings.configFile, ConfigurationUserLevel.None);
我还试图在声明后设置配置文件,但仍然没有运气。
如果我在此异常后尝试继续,则在尝试将变量设置为配置文件中的某个值时,接下来会收到TypeInitalizationException。
答案 0 :(得分:2)
遇到同样的问题。出于某种荒谬的原因,即使使用文件路径初始化ExeConfigurationFileMap也不会设置Configuration对象构造函数所需的属性ExeConfigFilename。我通过在实例化ExeConfigurationFileMap对象后立即设置该属性来修复它,如下所示:
public static ExeConfigurationFileMap configFile = new ExeConfigurationFileMap(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\QuikSnap\\QuikSnap.config");
configFile.ExeConfigFilename = "QuikSnap.config";
public static Configuration config = ConfigurationManager.OpenMappedExeConfiguration(Settings.configFile, ConfigurationUserLevel.None);
答案 1 :(得分:1)
您没有使用配置文件路径的值设置正确的属性。 此外,您对同一个类中的另一个静态变量具有静态变量依赖性。这里可能存在执行顺序问题(尽管我不确定) 试试这个:
public static Configuration config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
{
ExeConfigFilename = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\QuikSnap\\QuikSnap.config"
}, ConfigurationUserLevel.None);