我刚刚将其中一个FsXaml演示程序转换为解释的F#脚本,因此我可以尝试并学习。它不会运行,并且解释器给了我以下错误消息:
System.NotSupportedException:a中不支持调用的成员 动态装配。
在System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceStream(String 名)
在FsXaml.InjectXaml.from(String file,Object root)
在 FsXaml.App.ctor()的FsXaml.App.InitializeComponent() 在 FSI_0002.main [a](a argv) 在C:\ Users \ bobmc \ OneDrive \ FSharp \ Learning \ WPFExamples \ FsXaml \ demos \ WpfSimpleMvvmApplication \ WPFApp.fsx:第104行
at。$ FSI_0002.main @()in C:\ Users \用户bobmc \ OneDrive \ FSharp \学习\ WPFExamples \ FsXaml \演示\ WpfSimpleMvvmApplication \ WPFApp.fsx:行 109
我可以将F#解释器与FsXaml一起使用吗?感谢大家的帮助。
答案 0 :(得分:5)
不幸的是,WPF和脚本不能很好地协同工作。
在WPF运行时本身内发生异常 - FsXaml.InjectXaml
使用XamlObjectWriter
使用XAML文件中的内容填充类型。如果您正在使用动态程序集(如FSI),这种类型不起作用,遗憾的是FsXaml可能永远无法在FSI中工作。
话虽如此,即使有办法解决这个问题,但使用起来非常有限。 WPF还有一些限制,使其无法在脚本方案中运行良好,例如只有一个应用程序可以永远在给定的AppDomain中创建"限制。那个让它关闭了#34;主要" (第一个)窗口使它永远不会打开另一个窗口。因此,我没有优先考虑在FSI中完成这项工作。
如果有人知道如何让FsXaml在FSI环境中更好地发挥作用,我会很乐意接受贡献,但此时,我还没有看到这种用法的良好解决方案场景。
编辑:FsXaml 3.1.6现在包含使这更容易的功能。如果您不关闭主窗口,或者使用对话框,它运行良好。有一个演示应用程序/脚本说明了这一点。