Unity解析在发布模式下失败

时间:2017-12-04 14:56:34

标签: xamarin.forms unity-container

当我在发布模式下将我的应用部署到Android设备时,我在应用程序输出中收到以下错误...

Unity.Exceptions.ResolutionFailedException: Resolution of the dependency failed, type = 'Hello.MainPage', name = '(none)'.

这是它试图解决的第一件事。我已尝试更改已解决的第一种类型,但结果相同。因此,出于某种原因,Unity显然不会在发布模式下工作。 (虽然它已经过去了。)

我已将MainPage缩减为以下内容......

public class MainPage : TabbedPage
{

}

...所以没有失败的子决议。即使我在电话会议之前添加了这个内容,它根本就不存在......

Container.RegisterType<MainPage>();

为什么这可能在发布模式下失败但在调试模式下失败?

如果我将应用的主页面属性设置为TabbedPage,则该应用不会崩溃。

这确实有用......

    Container.RegisterInstance<string>("I love computers");

    string s = Container.Resolve<string>();

这不起作用......

    Container.RegisterType<MainPage>();

    MainPage = Container.Resolve<MainPage>();

这确实有用......

MainPage = new MainPage();

这确实有用......

    Container.RegisterInstance(new MainPage());

    MainPage = Container.Resolve<MainPage>();

好像没有将具体类型包含在捆绑包中,除非他们在某处新建了。

我认为我可能需要将[Preserve]属性添加到注入的类中,但它没有区别。

似乎是将链接器设置为&#34;链接所有程序集&#34;的结果。

1 个答案:

答案 0 :(得分:0)

我通过对每种具体类型使用new来实现这一点。即每种类型的注册都涉及具体类型的[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

还需要......

class Team(models.Model):
    name = models.CharField(max_length=50)
    others = DictField()

...否则编译器会从后面的代码中删除事件处理程序!