C# Excel加载项未加载包含服务引用配置信息的app.config
我已经编写了一个带有服务引用的应用程序,可以对特定URL进行web服务调用,效果非常好。我想将此代码移动到Excel加载项中,但遇到以下问题: 未处理的异常消息:在ServiceModel客户端配置节中找不到名为“ConnectionyHttpSoap12Endpoint”和约定为“Connectivity.ConnectivityPortType”的终结点元素。这可能是因为找不到应用程序的配置文件,或者在客户端元素中找不到与此名称匹配的端点元素C# Excel加载项未加载包含服务引用配置信息的app.config,c#,web-services,excel-dna,C#,Web Services,Excel Dna,我已经编写了一个带有服务引用的应用程序,可以对特定URL进行web服务调用,效果非常好。我想将此代码移动到Excel加载项中,但遇到以下问题: 未处理的异常消息:在ServiceModel客户端配置节中找不到名为“ConnectionyHttpSoap12Endpoint”和约定为“Connectivity.ConnectivityPortType”的终结点元素。这可能是因为找不到应用程序的配置文件,或者在客户端元素中找不到与此名称匹配的端点元素 问题是,由于Excel正在调用我的类库,因此未加
问题是,由于Excel正在调用我的类库,因此未加载带有服务引用信息的my app.config,而调用应用程序的app.config需要将服务引用添加到其中。但这可以用Excel来完成吗?更好的是,有没有办法从代码中加载我的app.config?您需要使用ConfigurationManager打开它。您通常可以在调用程序集路径中找到app.config文件,因此可以编写如下方法:
public static Configuration LoadLocalConfigurationFile(string fileName)
{
// fileName is the configuration file you want to open
var configMap = new ExeConfigurationFileMap
{
ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName)
};
return ConfigurationManager.OpenMappedExeConfiguration(
configMap, ConfigurationUserLevel.None);
}
我最近也遇到了同样的问题,发现最好的解决方案包括: 将配置文件指向:
AppDomain.CurrentDomain.BaseDirectory + "AssemblyName.dll.config"
其中AssemblyName是@hexboy在其评论中指出的加载项程序集的名称,答案是ExcelDNA要求配置文件与xll文件同名,但扩展名为.config。然后ExcelDNA将自动加载配置,不需要进一步的代码 还要注意,ExcelDNA在构建时会生成各种不同的文件。例如,addin.xll、addin-packed.xll、addin64.xll、addin64-packed.xll,其中项目部件名为addin
为了获取配置文件,它需要与外接程序使用的文件名匹配。例如,如果使用addin-packed.xll作为注册的Excel加载项,则为addin-packed.xll.config。我自己解决了这个问题。问题是Excel DNA需要配置文件为.xll.config,我使用了Visual Studio创建的默认.dll.config。问题是,我在谷歌上搜索了上述错误,而不是直接去Excel DNA网站查看论坛。不管怎样,现在一切都好了。