我花了一些时间来发现这一点,但是特定于设计器的属性(例如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的面板.
有针对这个的解决方法吗?我是否必须仅允许设计时属性通过而对该类型启用反射?
我知道可以嵌入到项目中的rd.xml文件.但是,如果< Type Name =“ Windows.UI.Xaml.Controls.Panel” ... />是否包含在内,这是否意味着我要告诉编译器从.Net本机优化中排除该面板?
解决方法:
这是您正在运行的.Net本机工具版本(ilc.exe)中的不幸错误.从Visual Studio Update 1版本开始,此属性已得到正确支持.您可以在这里获得RC:https://www.visualstudio.com/en-us/news/vs2015-update1-vs.aspx
如果您使用较旧的工具,可以放心地忽略该警告.