我花了一些时间才发现这一点,但设计师特有的属性,如 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.
如果你想让构建工作,我必须排除那个属性。然而,这违背了控件库的目的。我图书馆的用户不会知道 Panel
用名字PART_Panel
在 MyAwesomeControl 的模板中是必需的。
有解决办法吗?我是否必须为该类型启用反射才能允许设计时属性通过?
我知道 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
如果您无法使用旧工具,您可以安全地忽略该警告。
关于c# - UWP 中是否有替代 TemplatePartAttribute 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32859282/