gpt4 book ai didi

xaml - FsXaml 可以在 F# 解释脚本中使用吗?

转载 作者:行者123 更新时间:2023-12-04 12:05:03 24 4
gpt4 key购买 nike

我刚刚将 FsXaml 演示程序之一转换为解释性 F# 脚本,以便我可以对其进行试验和学习。它不会运行,解释器给了我以下错误消息:

System.NotSupportedException: The invoked member is not supported in a dynamic assembly.
at System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceStream(String name)
at FsXaml.InjectXaml.from(String file, Object root)
at FsXaml.App.InitializeComponent() at FsXaml.App..ctor()
at FSI_0002.main[a](a argv) in C:\Users\bobmc\OneDrive\FSharp\Learning\WPFExamples\FsXaml\demos\WpfSimpleMvvmApplication\WPFApp.fsx:line 104
at .$FSI_0002.main@() in C:\Users\bobmc\OneDrive\FSharp\Learning\WPFExamples\FsXaml\demos\WpfSimpleMvvmApplication\WPFApp.fsx:line 109



我可以将 F# 解释器与 FsXaml 一起使用吗?感谢大家的帮助。

最佳答案

不幸的是,WPF 和脚本不能很好地协同工作。

异常发生在 WPF 运行时本身 - FsXaml.InjectXaml正在使用 XamlObjectWriter使用 XAML 文件中的内容填充类型。如果您使用的是动态程序集(如 FSI),则此类型不起作用,不幸的是,这意味着 FsXaml 可能永远无法从 FSI 工作。

话虽如此,即使有办法解决这个问题,它的用途也非常有限。 WPF 还具有一些限制,使其不能很好地与脚本方案配合使用,例如“在给定的 AppDomain 中只能创建一个应用程序”限制。那个使关闭“主”(第一个)窗口使您永远无法打开另一个窗口。因此,我没有优先尝试在 FSI 中进行这项工作。

如果有人对如何让 FsXaml 在 FSI 的上下文中更好地发挥作用有想法,我很乐意接受贡献,但在这一点上,我没有看到适合该使用场景的好的解决方案。

编辑: FsXaml 3.1.6 现在包含的功能使这更容易。如果您不关闭主窗口或使用对话框,它运行良好。有一个演示应用程序/脚本说明了这一点。

关于xaml - FsXaml 可以在 F# 解释脚本中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com