1

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

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

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

4

3 回答 3

2

您需要使用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);
}
于 2012-11-02T16:57:17.620 回答
1

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

在运行时更改默认 app.config

将您的配置文件指向:

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

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

于 2013-06-18T01:52:34.270 回答
0

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

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

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

于 2019-07-12T10:59:43.593 回答