#c# #excel #excel-dna
#c# #excel #excel-днк
Вопрос:
У нас есть надстройка к Excel, написанная на C #. Мы также используем Excel-DNA. Недавно мы получили это окно при запуске надстройки
Есть идеи, что это за окно и как мы можем его использовать?
Ответ №1:
По умолчанию Excel-DNA попытается зарегистрировать все public static
методы в общедоступных типах в сборках, перечисленных как <ExternalLibrary ...>
в файле .dna.
Для вашей надстройки, похоже, существует более одной такой функции под названием ‘Modulus’, которую Excel-DNA пытается зарегистрировать. Ошибка возникает из-за этого дублирования (одна регистрация перезаписывается другой).
У вас есть несколько способов обойти это:
- Убедитесь, что у вас зарегистрирована только одна функция ‘Modulus’, либо сделав один из методов общедоступным, либо включив ‘ExplictExports= true’ в вашем файле .dna и пометив все функции
ExcelFunction
атрибутами. - Убедитесь, что у вас нет дополнительных библиотек, настроенных как
<ExternalLibrary>
в файле .dna — дополнительные сборки, которые вы хотите упаковать в один файл .xll следует добавить в виде<Reference>
тегов — они не проверяются на наличие функций и не регистрируются в Excel. - Вы можете контролировать, как работает ведение журнала, и, таким образом, предотвратить отображение окна ошибки, настроив параметры ведения журнала в файле .xll.config — см. https://github.com/Excel-DNA/ExcelDna/wiki/Diagnostic-Logging.
Ответ №2:
Ответ от @Govert полезен, но если вы не хотите исправлять ошибки и предупреждения в этом окне и не хотите их видеть, вам нужно вставить эту часть кода в свой файл app.config:
<!--Switch off the diagnostic -->
<system.diagnostics>
<sources>
<source name="ExcelDna.Integration" switchValue="Off"></source>
</sources>
</system.diagnostics>
Комментарии:
1. Вас также может заинтересовать перенаправление сообщений на другой регистратор и больший контроль над тем, как они интерпретируются (ошибка, предупреждение, информация и т.д.). Смотрите ExcelDNA. Диагностика. Serilog