MonoTouch - исключение типа загрузки, обновленная программа не зарегистрирована в симуляторе - PullRequest
2 голосов
/ 25 февраля 2012

Я установил пробную версию MonoTouch и оцениваю ее для использования.

Произошла эта странная ошибка:

Не удалось загрузить «MyProductName» для регистрации,Это может быть связано с устаревшей сборкой, хранящейся в симуляторе, местоположение: / PathToMyProduct

С последующим:

Произошло исключение загрузки типа.

Я предполагаю, что какая-то сборка не актуальна.Поэтому я попытался удалить его из указанного пути.Но все еще там.Поэтому я произвел чистку (переустановил MonoTouch, удалил путь двоичной сборки, в пути симулятора, удалил из симулятора, сбросил симулятор и, наконец, перезапустил OSX).Но все же он есть.

Есть какие-нибудь советы о том, как решить эту специфическую проблему?

С уважением, Кейт

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

Это сообщение охватывает большинства случаев, когда такое исключение имело место . Это было исправлено (на самом деле мы работали над ошибкой симулятора) в MonoTouch 5.0+ (даже раньше, но я не помню, какая именно версия). Простого сброса симулятора достаточно, чтобы исправить это условие.

Однако это маловероятная ситуация, с которой вы столкнулись, поскольку вы сделали намного больше, чем требовалось.

My думаю, будет означать, что проект включает сборку, которая ссылается на типы, которые недоступны в MonoTouch (например, из System.Reflection.Emit) или скомпилированы для другой версии платформы (например, повторное использование сборки) двоичный файл скомпилирован против .NET 4.0). Однако оба случая обычно не приводят к этому сообщению об ошибке, поэтому это может быть что-то еще.

Будет трудно дополнительно диагностировать проблему, не имея двоичных файлов. Не могли бы вы открыть отчет об ошибке на http://bugzilla.xamarin.com (вы можете пометить вложение как личное) или отправить электронное письмо по адресу support@xamarin.com (с прикрепленным проектом)?

1 голос
/ 25 февраля 2012

Итак, после бессонной ночи и 24-часовой полосы я наконец-то понял это! Был абстрактный класс, и этот класс-потомок не реализовал свой метод. Поэтому всякий раз, когда этот класс упоминается в коде, он вызывает исключение загрузки типа. В MonoDevelop не было никаких предупреждений, он хорошо скомпилирован, работает нормально, ужасно завис. Это безумие! Я реализовал переопределение для этого абстрактного метода, и вуаля, теперь он работает так, как ничего не произошло. Возможно, это ошибка MonoDevelop, но она также может быть в каком-то специальном компиляторе iPhone. Так что знайте об этом. Это упрощенная ситуация:


    public abstract class Parent : UITableViewDataSource
    {
        ..fields/constructors/methods and things

        // one method overriden just fine
        public override Int32 RowsInSection(UITableView tableView, Int32 section)
        {
            return SomeReasonableResult;
        }

        // other one is made abstract, and passed to descendants
        public abstract override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath);
    }

Теперь позже в классе потомков:


    public class Child : Parent
    {
        // GetCell method not implemented! No error or warning in compiler, or run log!
        // but when mentioned in a different class (for example) it crashes.
    }

Может быть, это известное поведение или ограничение. Но все же безумие.

Я иду спать сейчас ...

...