Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ConfigurationManager.OpenMappedExeConfiguration.GetSection()失败(最近刚刚开始)_C#_.net_Configurationmanager_Assemblybinding - Fatal编程技术网

C# ConfigurationManager.OpenMappedExeConfiguration.GetSection()失败(最近刚刚开始)

C# ConfigurationManager.OpenMappedExeConfiguration.GetSection()失败(最近刚刚开始),c#,.net,configurationmanager,assemblybinding,C#,.net,Configurationmanager,Assemblybinding,首先,让我为这个非常长的问题提前道歉——感谢所有能够坚持到最后的人 我有一个C#/.NET 3.5类库,它没有安装在GAC中,因为类库是另一个程序(ArcMap.exe)的外接程序。该程序实际上在启动时将.dll从存档文件提取到用户的本地设置\应用程序数据文件夹下的文件夹中,但我可以在运行时使用this.GetType().Assembly.location获取其位置 在库中,我有一个名为CustomConfigSection的类,该类在.config文件中引用 该库有一个类,其方法为Load

首先,让我为这个非常长的问题提前道歉——感谢所有能够坚持到最后的人


我有一个C#/.NET 3.5类库,它没有安装在GAC中,因为类库是另一个程序(ArcMap.exe)的外接程序。该程序实际上在启动时将.dll从存档文件提取到用户的本地设置\应用程序数据文件夹下的文件夹中,但我可以在运行时使用
this.GetType().Assembly.location
获取其位置

在库中,我有一个名为
CustomConfigSection
的类,该类在.config文件中引用

该库有一个类,其方法为
LoadConfigSection()
,该类使用
ConfigurationManager.OpenMappedExeConfiguration()
从.config文件(存储在用户的应用程序数据文件夹中)读取,并返回
CustomConfigSection
——或者应该返回。发生的情况是
GetSection()
抛出一个讨厌的
ConfigurationErrorsException
异常,说它找不到包含我的
CustomConfigSection
的程序集

令人恼火的是,这两天前还有效。我认为Windows更新破坏了这一点。我已经返回并尝试了我的代码的以前版本,我知道这些版本工作得很好,但没有任何效果。环境中发生了一些变化,不是在我的代码中,而是在其他机器上也发生了变化,所以不仅仅是我

下面是一个示例.config文件:


我用来阅读它的代码(正如我2天前提到的,它工作得非常好):

private CustomConfigSection LoadConfigSection()
{
ExeConfigurationFileMap configFileMap=新建ExeConfigurationFileMap();
configFileMap.ExeConfigFilename=m_userConfigFilePath;
Configuration config=ConfigurationManager.OpenMappedExeConfiguration(configFileMap,ConfigurationUserLevel.None);
CustomConfigSection configSection=config.GetSection(“CustomConfigSection”)作为CustomConfigSection;
返回段;
}
m_userConfigFilePath
是.config文件的有效路径,并且
Configuration
对象的
HasFile
属性为true

以下是启用程序集绑定日志记录后出现的错误:

System.Configuration.ConfigurationErrorsException:为customConfigSection创建配置节处理程序时出错:无法加载文件或程序集“TestExeConfigurationFileMapAddin,Version=1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。(C:\Documents and Settings\…\Application Data\TestExeConfigurationFileMapAddin\test.config第4行)--->System.IO.FileNotFoundException:无法加载文件或程序集“TestExeConfigurationFileMapAddin,Version=1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。
文件名:“TestExeConfigurationFileMapAddin,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”
位于System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost主机,字符串typeString,布尔throwOnError)
位于System.Configuration.MgmtConfigurationRecord.CreateSectionFactory(FactoryRecord FactoryRecord)
在System.Configuration.BaseConfigurationRecord.FindAndensureRefactoryRecord(字符串configKey、布尔值和isRootDeclaredHere)
从以下位置加载的程序集管理器:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
在可执行文件C:\Program Files\ArcGIS\Desktop10.0\Bin\ArcMap.exe下运行
---下面是详细的错误日志。
==预绑定状态信息===
日志:用户=。。。
日志:DisplayName=TestExeConfigurationFileMapAddin,版本=1.0.0.0,区域性=中性,PublicKeyToken=null
(详细说明)
日志:Appbase=file:///C:/Program 文件/ArcGIS/Desktop10.0/Bin/
日志:初始PrivatePath=NULL
调用程序集:System.Configuration,版本=2.0.0.0,区域性=neutral,PublicKeyToken=b03f5f7f11d50a3a。
===
日志:此绑定在默认加载上下文中启动。
日志:使用应用程序配置文件:C:\Program Files\ArcGIS\Desktop10.0\Bin\ArcMap.exe.Config
日志:使用C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config中的计算机配置文件。
日志:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。
日志:正在尝试下载新URLfile:///C:/Program 文件/ArcGIS/Desktop10.0/Bin/TestExeConfigurationFileMapAddin.DLL。
日志:正在尝试下载新URLfile:///C:/Program 文件/ArcGIS/Desktop10.0/Bin/TestExeConfigurationFileMapAddin/TestExeConfigurationFileMapAddin.DLL。
日志:正在尝试下载新URLfile:///C:/Program 文件/ArcGIS/Desktop10.0/Bin/TestExeConfigurationFileMapAddin.EXE。
日志:正在尝试下载新URLfile:///C:/Program 文件/ArcGIS/Desktop10.0/Bin/TestExeConfigurationFileMapAddin/TestExeConfigurationFileMapAddin.EXE。
---内部异常堆栈跟踪的结束---
在System.Configuration.BaseConfigurationRecord.FindAndensureRefactoryRecord(字符串configKey、布尔值和isRootDeclaredHere)
位于System.Configuration.BaseConfigurationRecord.GetSectionRecursive(字符串configKey、布尔getLkg、布尔checkPermission、布尔getRuntimeObject、布尔RequestISHER、对象与结果、对象与结果EntimeObject)
位于System.Configuration.BaseConfigurationRecord.GetSection(字符串configKey、布尔getLkg、布尔checkPermission)
位于System.Configuration.Configuration.GetSection(字符串sectionName)
在C:\CSProjects\TestExeConfigurationFileMapAddin\TestExeConfigurationFileMapAddin\Form1.cs中的TestExeConfigurationFileMapAddin.Form1.LoadConfigSection()处:第46行
在C:\CSProjects\TestExeConfigurationFileMapAddin\Test中的TestExeConfigurationFileMapAddin.Form1.LoadConfig()处