【发布时间】:2012-09-12 16:51:43
【问题描述】:
我正在编写用于 WPF 和 Silverlight 的代码。在 C# 中,我可以使用 "#if SILVERLIGHT" 进行条件编译,它可以工作。
然而,在 XAML 中,我必须使用完全不同的 XAML 文件,因为某些属性根本不兼容。 XAML 文件的点赞率高达 99%,但要让它们保持同步很麻烦。
我想将它们转换成 T4 模板,所以我可以执行以下操作:
<SomeControl <#=ClipsToBounds()#> />
ClipsToBounds() 为 WPF 和 Silverlight 生成不同的文本。要求是:
- 处理 XAML 时的智能感知
- 构建时生成的模板
- 该项目必须是独立的,并且可以在 Visual Studio 的股票版本上运行:不安装各种 SDK 和 3rd 方编辑器 可以接受
- 模板运行的结果不应在源代码管理中。 -
我发现我可以在 XAML 文件中从 MSBuild:Compile to TextTemplatingFileGenerator 更改 custom tool,并且不会丢失 Intellisense。但是,生成的模板是在设计时生成的。然后在构建时生成似乎是一个很大的痛苦。
有没有人有过这种设置的成功经验?
【问题讨论】:
-
不使用可移植类库吗?
-
可移植类库解决了共享非 UI 代码的问题,如果使用 MVVM,它们应该非常适合 ViewModel 层,而不是视图。
标签: wpf silverlight xaml t4