Надстройка 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.