【问题标题】:Excel Add-In not loading app.config with service reference config informationExcel 加载项未使用服务参考配置信息加载 app.config
【发布时间】:2012-11-02 16:35:03
【问题描述】:

我编写了一个带有服务引用的应用程序,用于对特定 URL 进行 Web 服务调用,它运行良好。我想将此代码移动到 Excel 加载项中,但我遇到了这个问题:

未处理的异常消息:在 ServiceModel 客户端配置部分中找不到名为“ConnectivityHttpsSoap12Endpoint”和合同“Connectivity.ConnectivityPortType”的端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。

问题是我的 app.config(带有服务引用信息)没有被加载,因为 Excel 正在调用我的类库,调用应用程序的 app.config 需要将服务引用添加到它。但这可以用 Excel 完成吗?更好的是,有没有办法从代码中加载我的 app.config?

【问题讨论】:

  • 我自己解决了这个问题。问题是 Excel-DNA 需要配置文件为 .xll.config,而我使用了 Visual Studio 创建的默认 .dll.config。问题是我对上述错误进行了谷歌搜索,而不是直接访问 Excel-DNA 站点并查看论坛。无论如何,现在一切都好。

标签: c# web-services excel-dna


【解决方案1】:

您需要使用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);
}

【讨论】:

    【解决方案2】:

    我自己最近也遇到了同样的问题,发现最好的解决方案包含在:

    Change default app.config at runtime

    将您的配置文件指向:

    AppDomain.CurrentDomain.BaseDirectory + "AssemblyName.dll.config"
    

    其中 AssemblyName 是插件程序集的名称

    【讨论】:

      【解决方案3】:

      正如@hexboy 在他的评论中指出的那样,答案是 ExcelDNA 要求配置文件与“xll”文件同名,但扩展名为“.config”。然后 ExcelDNA 将自动加载配置,无需其他代码。

      另请注意,ExcelDNA 在构建时会生成各种不同的文件。例如。 addin.xlladdin-packed.xlladdin64.xlladdin64-packed.xll,其中项目程序集被命名为addin

      为了获取配置文件,它需要与用于加载项的文件名相匹配。例如。 addin-packed.xll.config 如果使用 addin-packed.xll 作为注册的 Excel 加载项。

      【讨论】:

        猜你喜欢
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 2013-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多