启用.NET Native工具链时,UnityContainer.Resolve崩溃

时间:2015-12-08 22:01:05

标签: c# .net unity-container uwp .net-native

我们有一个Windows 10 UWP应用程序,可以在Debug版本下运行,并在Release版本下崩溃。它使崩溃的版本构建的内容是启用了.NET Native工具链 - 禁用允许应用程序运行的版本。但这不是一个真正的解决方案,因为如果您打算发布到商店,它需要与.NET Native工具链一起运行。

我们使用Microsoft.Practices.Unity进行DI。以下是我们如何注册某些类的示例:

[Authorize]
    public IHttpActionResult Post(Review review)
    {
        var user = this.User as ClaimsPrincipal;

        if(!user.HasClaim("IsAdmin", "true"))
        {
            return Unauthorized();
        }

        if (!ModelState.IsValid)
        {
            return BadRequest(this.ModelState);
        }

        _repo.SaveReview(review);

        return Created("/reviews/" + review.Id, review);
    }

然后,在我们的应用程序中,我们按如下方式解决:

container.RegisterType<IBoardView, BoardView>();

除非我使用.NET Native运行它,否则它会正常工作,在这种情况下我得到以下异常:

  

Microsoft.Practices.Unity.dll中出现“Microsoft.Practices.Unity.ResolutionFailedException”类型的异常,但未在用户代码中处理

     

其他信息:依赖项的解析失败,type =“WindowsUniversal.ViewModels.Interfaces.IBoardViewModel”,name =“(none)”。

     

在解析时发生异常。

在输出窗口中,我得到:

  

抛出异常:System.Linq.Expressions.dll中的'System.NullReferenceException'

     

抛出异常:Microsoft.Practices.Unity.dll中的'System.NullReferenceException'

     

抛出异常:Microsoft.Practices.Unity.dll中的“Microsoft.Practices.Unity.ResolutionFailedException”

     

Microsoft.Practices.Unity.dll中出现“Microsoft.Practices.Unity.ResolutionFailedException”类型的异常,但未在用户代码中处理

     

其他信息:依赖项的解析失败,type =“WindowsUniversal.ViewModels.Interfaces.IBoardViewModel”,name =“(none)”。

     

在解析时发生异常。

     

异常是:NullReferenceException - 未将对象引用设置为对象的实例。

     

在例外时,容器是:

     

解析WindowsUniversal.ViewModels.Interfaces.IBoardViewModel,(无)

当禁用.NET Native时,所有这些都在Debug或Release下工作。现在我知道.NET Native有它的局限性,反射就是其中之一。我想我在问这个怎么解决这个问题?

非常感谢任何见解,谢谢。

0 个答案:

没有答案