Надстройка Excel не загружает файл app.config с информацией о конфигурации справочной службы

Я написал приложение со ссылкой на сервис, чтобы звонить веб-сервисам по определенному URL, и оно прекрасно работает. Я хочу переместить этот код в надстройку Excel, но я столкнулся с этой проблемой:

Необработанное сообщение об исключении: Не удалось найти элемент конечной точки с именем "ConnectivityHttpsSoap12Endpoint" и контрактом "Connectivity.ConnectivityPortType" в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации или из-за того, что в клиентском элементе не найден элемент конечной точки, соответствующий этому имени.

Проблема в том, что мой app.config (с информацией о сервисных ссылках) не загружается, потому что Excel вызывает мою библиотеку классов, и app.config вызывающего приложения должен будет добавить в него сервисную ссылку. Но можно ли это сделать с помощью Excel? Еще лучше, есть ли способ просто загрузить мой app.config из кода?

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);
}

У меня недавно была такая же проблема, и я обнаружил, что лучшее решение содержится в:

Изменить app.config по умолчанию во время выполнения

указывая ваш файл конфигурации на:

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.config при использовании addin-packed.xll в качестве зарегистрированной надстройки Excel.

Другие вопросы по тегам