UWP 中是否有替代 TemplatePartAttribute 的方法?

Is there an alternate to TemplatePartAttribute in UWP?

我花了一些时间才发现这一点,但像 TemplatePart 这样的设计器特定属性现在导致我的 UWP 应用程序的发布版本出现问题。

将此属性应用于您的控件正在使用反射。

[TemplatePart(Name = PART_Panel, Type = typeof(Panel))]
public class MyAwesomeControl : Control
{
   ...
}

构建输出给了我这个:

warning : Type 'Windows.UI.Xaml.Controls.Panel' was not included in compilation, but was referenced in type 'MyAwesomeControl'. There may have been a missing assembly.

如果您希望构建正常运行,我必须排除该属性。然而,这违背了控件库的目的。我的图书馆的用户不会知道在 MyAwesomeControl 的模板中需要一个名为 PART_PanelPanel

有解决办法吗?我是否必须为该类型启用反射才能允许设计时属性通过?

我知道 rd.xml 文件可以嵌入到项目中。但是,如果包含 <Type Name="Windows.UI.Xaml.Controls.Panel" ... />,这是否意味着我要告诉编译器从 .Net Native 优化中排除该面板?

这是您 运行 使用的 .Net Native 工具 (ilc.exe) 版本中的一个不幸错误。自 Visual Studio 的 Update 1 版本起,此属性得到正确支持。您可以在此处获取 RC:https://www.visualstudio.com/en-us/news/vs2015-update1-vs.aspx

如果您无法使用旧工具,可以安全地忽略该警告。