将PRISM 6与UWP一起使用时应用程序崩溃
本文关键字:应用程序 崩溃 一起 PRISM UWP | 更新日期: 2023-09-27 18:26:13
我在一个新的UWP项目中引用了以下库。
- 棱镜
- 棱镜单元Windows
- 棱镜窗口
在用PrismUnityApplication替换应用程序类的基类后,我在代码中设置了一个异常
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
文件应该是这样的(根据使用稳定版或预发布版,你当然会有不同的版本):
{
"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替换基类。从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);
}
}
现在运行应用程序,会出现此错误,因为MainPage文件尚未移动。
中发生类型为"System.ArgumentException"的异常Prism.Windows.dll,但未在用户代码中处理
附加信息:页面名称Main没有关联在命名空间App2.视图中键入
在Views文件夹下添加一个新的空白页,一切都会正常运行。请按照上述步骤仔细重试。
您可以在https://github.com/PrismLibrary/Prism-Samples-Windows
Bart,我认为arshadbadarkhan也遇到了同样的问题。
arshadbadarkhan,如果你和我们一样,你正试图在AdventureWorks参考实现后为你的新Prism6应用程序建模。我们通过从AW添加一个容易被忽视的文件夹和文件来解决这个运行时问题。当我们复制这个文件时:
''Prism Samples Windows master ''Prism Samples Windows master''AdventureWorks.Shopper''Adventure Works.Shoper''Strings''en-US''Resources.resw
到我们新产品的主要应用程序项目中的Strings/en-US文件夹,我们避免了ResourceMap未找到错误。现在我们可以利用AW使用的任何默认字符串,并且我们有一个存储库来在将来添加我们自己的字符串。