Переключение на Release Build вызывает ошибку времени выполнения в Web Reference - PullRequest
2 голосов
/ 22 января 2009

У меня проблема с веб-справкой SOAP, сгенерированной Visual Studio 2005 (.NET Framework v2.0.50727.42) - она ​​отлично работает в конфигурации сборки Debug (и имеет несколько месяцев), но теперь Я хочу запустить и скомпилировать, используя конфигурацию выпуска, она перестала работать.

Исключения возникают во время выполнения всякий раз, когда я вызываю метод в веб-справочнике. Наиболее распространенное исключение:

System.InvalidOperationException: There was an error generating the XML document. ---> System.ArgumentException: Item has already been added. Key in dictionary: 'MayriseWebServices.RefuseService.PremiseSummaryStructure'  Key being added: 'MayriseWebServices.RefuseService.PremiseSummaryStructure'

Язык проекта и сгенерированного веб-справочника - VB.NET, а не C #. Поскольку сгенерированный код Reference.vb на самом деле не меняется, только тип сборки, я ничего там не могу найти и, очевидно, не могу отладить сборку Release.

Я заметил, что сборка Release отделяет сборку * .XmlSerializers.dll от основной сборки. Есть ли известные проблемы с этим?

Я бы не стал использовать Debug-сборку по понятным причинам. Может быть, мне стоит немного почитать о CodeDOM, я хотел это сделать!

Я должен упомянуть, что нашел пост с причинами, по которым сборка Release будет работать по-другому , но, похоже, он сфокусирован на C ++.

Спасибо за любую помощь, которую вы можете оказать.

ОБНОВЛЕНИЕ: Третье предложение по отключению сборок сериализации устранило проблему. Я изменил параметр «Генерировать сборки сериализации» с «Авто» на «Выкл» в дополнительных параметрах компиляции, и мои тесты теперь проходят. Я не знал об этой настройке.

Я не уверен, в чем заключается основная проблема со сборками сериализации. Я предоставлю обновление, если у меня будет возможность отладить сборку Release, используя ваш совет во втором предложении.

1 Ответ

4 голосов
/ 15 февраля 2009

У меня нет ответа для вас, хотя у меня есть мысли о том, как решить эту проблему.

  1. Поскольку это ошибка времени выполнения, которая возникает только при сборке RELEASE, а не при сборке DEBUG, мне интересно, генерирует ли VB-компилятор тот же IL или нет. Что вы можете сделать, это скомпилировать версию сборки DEBUG, а затем скомпилировать версию сборки RELEASE. Если у вас есть версия сборки DEBUG и RELEASE, используйте ILDASM.exe для выполнения разборки обеих сборок. Сохраните файлы как текст и используйте WinDiff.exe, чтобы сравнить их. Это может или не может дать вам некоторые подсказки.
  2. Возможно, вы захотите изменить настройки вашего проекта для конфигурации RELEASE, чтобы сгенерировать PDB (/ debug: pdbonly). Это позволит вам отлаживать, пока вы запускаете процесс из Visual Studio.
  3. Созданные сборки * .XmlSerializers.dll предназначены для улучшения начальных вызовов, вызывающих сериализацию. В качестве шага по устранению неполадок вы можете отключить его в конфигурации RELEASE свойств вашего проекта, чтобы увидеть, есть ли у вас по-прежнему такая же проблема.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...