【发布时间】:2015-09-30 06:31:30
【问题描述】:
我花了一些时间才发现这一点,但像 TemplatePart 这样的设计器特定属性现在导致我的 UWP 应用程序的发布版本出现问题。
将此属性应用于您的控件是使用反射。
[TemplatePart(Name = PART_Panel, Type = typeof(Panel))]
public class MyAwesomeControl : Control
{
...
}
构建输出给了我这个:
警告:类型“Windows.UI.Xaml.Controls.Panel”未包含在 编译,但在“MyAwesomeControl”类型中被引用。也许有 一直缺少程序集。
如果您希望构建工作,我必须排除该属性。然而,这违背了控制库的目的。我的库的用户不会知道 MyAwesomeControl 的模板中需要一个名为 PART_Panel 的 Panel。
有解决办法吗?我是否必须为该类型启用反射才能允许设计时属性通过?
我知道rd.xml 文件可以嵌入到项目中。但是,如果包含 <Type Name="Windows.UI.Xaml.Controls.Panel" ... />,这是否意味着我告诉编译器将该面板排除在 .Net Native 优化之外?
【问题讨论】:
-
This article 可能会提供线索。它是为 VS2013(.Net Native Beta)编写的,所以我不知道它是否可以转换为 VS2015。基本上解决方案是创建一个 rd.xml 文件,其中包含库中的反射类型。 rd.xml 文件被构建为二进制文件中的嵌入式资源,因此最终用户无需执行任何操作。
-
嗨@chuex,我以前读过那篇文章,是的,它很有帮助。但是,这是否意味着我会告诉编译器从 .Net Native 优化中排除面板?
-
我认为你已经达到了我在这方面的专业知识的极限。上面的构建输出只是一个警告......它不应该阻止你构建,对吗?我确实尝试使用上面的模板属性创建一个重现项目。我收到了警告,但我的项目仍然运行良好。就像我说的我对 Blend 和设计师属性不够熟悉,所以也许我做错了什么。
标签: c# xaml windows-store-apps uwp