Я получаю ошибку System.MissingMethodException после того, как у меня есть необязательный параметр в одном компоненте, а другой компонент, который вызывает его, не был создан, так как он вызывает его со старым числом параметров.System.MissingMethodException после добавления необязательного параметра
Только компонент, в который добавлен параметр, был встроен как патч. Вызывающий компонент старый, поскольку в нем нет изменений.
Когда вызывающий компонент запуска дает ошибку:
Exception Информация
Исключение Тип: System.MissingMethodException Сообщение: Метод не найдено: «LabelURLs IPSD.BnB.Transaction.Postage.GetLabelURLs (System.String). Данные: System.Collections.ListDictionaryInternal TargetSite: Пустота GenerateScanForm (Int32, Int32) HelpLink: NULL Источник: BnBDispenseQueueProcess
Насколько я знаю, что это не должно вызвать ошибку как новый параметр не является обязательным. Еще одна вещь, вызывающая компонент (EXE), запускается как служба Windows.
Мы нашли очень проводное обходное решение, чтобы оно работало. Удалив измененный компонент один раз и запустив вызывающий компонент, который скажет, что DLL не найдена. В месте, где одна и та же DLL снова и вызывающий компонент отлично работают :).
Я думаю, что мне не хватает некоторых внутренних компонентов .net.
Дайте мне знать, если вам нужна дополнительная информация.
Мы добавили необязательный параметр в одну из наших общих библиотек. Это сломало все запущенные модули (нам повезло, это было на тестировании env). Это модные особенности времени разработки .net, похоже, мы должны глубоко их понять, прежде чем использовать его. Спасибо, что спросили об этом. – CreativeManix
@CreativeManix, пожалуйста, дайте мне знать, что вы нашли. так как он не мог полностью понять, почему он так себя вел. может быть какой-то компиляционный трюк, происходящий за сценой – sandeep
@Sanddep, как упоминал Джон Скит, необязательные параметры - это функция времени компиляции. В момент компиляции в сборке Caller дополнительные значения параметров передаются со значениями по умолчанию. поэтому, если вы добавили необязательный параметр в общую библиотеку, убедитесь, что вы также собираете сборку вызовов. Если вы не хотите компилировать всю сборку вызовов лучше использовать необязательный параметр, вместо этого используйте перегруженный метод; – CreativeManix