第一个XAML程序颇费了一番周折: Longhorn SDK安装在E:盘,但不知怎地Xamlc.exe被孤琳琳的装在C:下面。费了半天时间才把它挖出来。Longhorn SDK文档里面似乎也完全没有提到Xamlc.exe。原本以为MSBuild会在内部调用XamlC.exe,结果正好相反,Xamlc只不过是使用缺省XAML Project Build的方法调用MSBuild类库。真正的XAML -> BAML编译器似乎只在类库当中存在(MS.Internal.MarkupCompiler, PresentationFramework)。
编译后的Baml文件会在Runtime使用Serialization的方式调入内存,然后用System.Windows.Serialization.Parser解释执行。总觉得这样的工作模式有点诡异:如果Xaml文件里面有个Property的设置不对,Compiler不能及时发现问题,而是Runtime Exception。
比如:<Button DockPanel.Dock=”Center” ...>
Center其实不是一个有效的Dock option,但是这个Xaml照样可以编译成Baml文件。只有在Load/Parse Baml文件的时候,程序才会检查到错误并且throw一个Exception。
打印 | 张贴于 2004-05-16 09:39:00 | Tag:.NET
留言反馈
对简单的XAML,直接可以在IE中Host. 比如helloworld.xaml.
对于有代码的XAML,建议直接使用MsBuild. SDK中应该有许多使用msbuild的例子。