Ошибка при создании версии выпуска при обращении к веб-сервису

#xamarin.android

#xamarin.android

Вопрос:

Если я создам новое приложение Mono для Android, затем изменю активную конфигурацию решения на Release, затем щелкните правой кнопкой мыши и выберите build, приложение будет нормально построено.

Если я затем добавлю веб-ссылку наhttp://soatest.parasoft.com/calculator .wsdl согласно этому руководству, тогда при повторной сборке я получаю ошибку:

Ошибка 1 Не удалось загрузить файл или сборку ‘mscorlib, Version = 2.0.5.0, Culture = neutral, PublicKeyToken =7cec85d7bea7798e’ или одну из его зависимостей. Не удалось выполнить строгую проверку имени. (Исключение из HRESULT: 0x8013141A)
C:UsersAdministratorDocumentsVisual Studio 2010ProjectsMonoAndroidApplication3MonoAndroidApplication3SGEN

Если я изменю активную конфигурацию обратно на Debug then build, то решение будет построено нормально. Однако я вообще не могу заставить конфигурацию выпуска для сборки при обращении к какой-либо веб-службе. Это вызывает у меня проблемы, поскольку я не могу развернуть версию выпуска моего приложения.

Я пробовал использовать VS2010 и MonoDevelop 2.6 Beta 2, оба выдают одинаковую ошибку.

Ответ №1:

Я не могу понять, почему это происходит, но вы можете обойти это, перейдя на вкладку «Сборка» в свойствах проекта и отключив «Генерировать сборку сериализации».

Комментарии:

1. Спасибо за ответ, отключение сборки Generate serialization позволяет мне создать версию выпуска приложения. Однако затем вызовы веб-службы выдают мне ошибки при использовании версии выпуска. Отладочная версия по-прежнему работает нормально, даже если сборка Generate serialization отключена. В моем тестовом приложении с использованием soatest.parasoft.com/calculator . wsdl при вызове службы я получаю ошибку: Systen.Net.WebException: Ошибка: ошибка NameResolutionFailure в System.Net.HttpWebRequest. EndGetRequestStream (IAsyncResult AsyncResult) [0x00000] в <имя файла неизвестно>:0

2. Перейдите в свойства вашего проекта, добавьте манифест Android и укажите, что вам требуется разрешение на доступ в Интернет. Это добавляется по умолчанию в режиме отладки для поддержки отладки, но должно быть добавлено вручную в режиме выпуска, если вашему приложению действительно необходимо использовать Интернет.

3. Спасибо, это сработало, моя версия выпуска теперь работает на моем телефоне!

4. У меня была такая же проблема при использовании MonoDevelop. Я добавил следующую строку в раздел выпуска файла: <GenerateSerializationAssemblies>Отключено</GenerateSerializationAssemblies>

Ответ №2:

Создание сборки сериализации не позволило выполнить сборку.

Я получил NameResolutionFailure при выборе целевого выпуска, потому что я не установил разрешение доступа в Интернет в настройках приложения:

  1. щелкните правой кнопкой мыши свой проект
  2. выберите параметры
  3. выберите левый пункт «Mono для приложения Android»
  4. установите требуемые разрешения: «ИНТЕРНЕТ», установив галочку рядом с ним.

Похоже, что это активно для отладочных сборок, поскольку используется для подключения отладчика к приложению.

Вы должны установить это самостоятельно в конфигурации сборки выпуска.