使用PRISM 6与UWP的应用程序崩溃

时间:2015-12-08 21:16:54

标签: c# prism uwp

我在新的UWP项目中引用了以下库。

  • 棱镜
  • Prism.Unity.Windows
  • Prism.Windows

用PrismUnityApplication替换app类的基类后,在代码

中替换异常
            var resourceLoader = ResourceLoader.GetForCurrentView(Constants.InfrastructureResourceMapId);

以下方法

  public void RegisterFrame(IFrameFacade frame, String sessionStateKey)

在班级

 public class SessionStateService : ISessionStateService

错误消息为:找不到ResourceMap。

我错过了某个地方的步骤

2 个答案:

答案 0 :(得分:1)

我认为你在设置中做错了,因为我无法使用稳定版和预发行版包重现错误。如Prism的readme page所述,你应该只安装Prism.Unity软件包,其余的将被相应地拉入。

  

请注意,将特定于容器的包添加到项目中,还将引入正确的特定于平台的包和核心PCL库。例如。如果您想在WPF项目中使用Unity,请添加Prism.Unity包,其余的也将被拉入。

这确实会引入您提到的引用,但只有Prism.Unity包被添加为项目引用。您的project.json文件应如下所示(取决于使用稳定版或预发布版,您将拥有不同版本的课程):

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
    "Prism.Unity": "6.2.0-pre1"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

下一步确​​实是在C#和XAML文件中用PrismUnityApplication替换基类。除了构造函数和OnLaunchApplicationAsync方法之外,从App类中删除所有内容:

sealed partial class App : PrismUnityApplication
{
    public App()
    {
        this.InitializeComponent();
    }

    protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args)
    {
        NavigationService.Navigate("Main", null);
        return Task.FromResult<object>(null);
    }
}

现在运行应用程序会出现此错误,因为MainPage文件尚未移动。

  

类型&#39; System.ArgumentException&#39;的例外情况发生在   Prism.Windows.dll但未在用户代码中处理

     

其他信息:页面名称Main没有关联   输入命名空间App2.Views

在Views文件夹下添加一个新的空白页面,一切运行正常。请仔细按照上述步骤再试一次。

您可以在https://github.com/PrismLibrary/Prism-Samples-Windows

找到样本

答案 1 :(得分:0)

巴特,我认为arshadbadarkhan遇到了同样的问题。

arshadbadarkhan,如果您像我们一样,您正在尝试在AdventureWorks参考实施后建模您的新Prism6应用程序。我们通过在AW中添加一个容易被忽略的文件夹和文件来修复此运行时问题。当我们复制这个文件时:

... \棱镜样本-Windows的主\棱镜样本-Windows的主\ AdventureWorks.Shopper \ AdventureWorks.Shopper \字符串\ EN-US \ Resources.resw

到我们新产品的主应用程序项目中的Strings / en-US文件夹,我们避免了找不到ResourceMap错误。现在我们可以利用AW使用的任何默认字符串,并且我们有一个存储库可以在将来添加我们自己的字符串。