C# PRISM 6在UWP中的应用

C# PRISM 6在UWP中的应用,c#,prism,uwp,C#,Prism,Uwp,我在一个新的UWP项目中引用了以下库 棱镜 Prism.Unity.Windows 棱镜,窗户 在用PrimunityApplication替换app类的基类后,我在代码中设置了一个异常 var resourceLoader = ResourceLoader.GetForCurrentView(Constants.InfrastructureResourceMapId); 用下面的方法 public void RegisterFrame(IFrameFacade

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

  • 棱镜
  • Prism.Unity.Windows
  • 棱镜,窗户
在用PrimunityApplication替换app类的基类后,我在代码中设置了一个异常

            var resourceLoader = ResourceLoader.GetForCurrentView(Constants.InfrastructureResourceMapId);
用下面的方法

  public void RegisterFrame(IFrameFacade frame, String sessionStateKey)
在课堂上

 public class SessionStateService : ISessionStateService
错误消息为:未找到ResourceMap


我是否错过了一个步骤,我想你在设置中做错了什么,因为我无法用稳定的和预发布的软件包重现错误。如Prism上所述,您应该只安装Prism.Unity软件包,其余软件包将相应地被拉入

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

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

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

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

    protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args)
    {
        NavigationService.Navigate("Main", null);
        return Task.FromResult<object>(null);
    }
}
密封部分类应用程序:PrismUnityApplication
{
公共应用程序()
{
this.InitializeComponent();
}
受保护的重写任务OnLaunchApplicationAsync(LaunchActivatedEventArgs args)
{
NavigationService.Navigate(“主”,空);
返回Task.FromResult(空);
}
}
现在运行应用程序,会出现此错误,因为主页文件尚未移动

中发生“System.ArgumentException”类型的异常 Prism.Windows.dll,但未在用户代码中处理

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

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


你可以在巴特找到样本,我想阿尔沙巴达坎和我们有同样的问题

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

…\Prism示例Windows master\Prism示例Windows master\AdventureWorks.Shopper\AdventureWorks.Shopper\Strings\en US\Resources.resw


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

谢谢。。这对我来说是相当长一段时间的痛苦。
sealed partial class App : PrismUnityApplication
{
    public App()
    {
        this.InitializeComponent();
    }

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