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_Panel
的 Panel
。
有解决办法吗?我是否必须为该类型启用反射才能允许设计时属性通过?
我知道 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
如果您无法使用旧工具,可以安全地忽略该警告。
我花了一些时间才发现这一点,但像 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_Panel
的 Panel
。
有解决办法吗?我是否必须为该类型启用反射才能允许设计时属性通过?
我知道 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
如果您无法使用旧工具,可以安全地忽略该警告。