【问题标题】:How to compile a .NET assembly against Silverlight?如何针对 Silverlight 编译 .NET 程序集?
【发布时间】:2011-12-30 08:17:59
【问题描述】:

我正在尝试为 Silverlight 编译 AvalonEdit,但我不知道该怎么做,因为我从未使用过 Silverlight,只使用过 WPF。

我尝试将此控件添加到我的 Silverlight 应用程序,但 Visual Studio 抱怨该程序集未针对 Silverlight 编译。

我认为这将是在项目设置中的目标平台下选择 Silverlight 的问题。

有什么想法吗?

【问题讨论】:

  • 否,根据答案,要使其在 SL 上运行需要做很多工作。

标签: c# .net wpf silverlight avalonedit


【解决方案1】:

Silverlight 和 WPF 程序集不兼容。因此,您从 Silverlight 程序集引用的任何程序集也必须已编译为 Silverlight 程序集。我假设您对“项目设置”的引用是您的程序集,而不是第三方程序集。

但是,将 WPF 代码编译为 Silverlight 可能具有挑战性。 Silverlight 是 WPF 的功能子集,因此代码可能会使用 Silverlight 中不可用的功能。

【讨论】:

  • 谢谢,我指的是他们的程序集,因为它是开源的。
【解决方案2】:

您需要创建以 silverlight 为目标的新项目(文件 - 新项目 - Silverlight),然后将 AvalonEdit 源代码中的所有源代码添加到该库中。

编辑:

另请注意,该控件可能使用 Silverlight 中不可用的类。来自与此控件相关的 codeplex 讨论(从 2009 年开始):

Silverlight 没有 System.Windows.Media.TextFormatting 命名空间,因此如果要将 AvalonEdit 移植到 Silverlight,则必须重写大部分 ICSharpCode.AvalonEdit.Rendering 命名空间。

【讨论】:

    【解决方案3】:

    在silverlight 项目中,您不能引用非silverlight dll 或项目。所以在这个项目中,如果有一个必不可少的非silverlight dll来构建这个项目。你不能做这个构建。

    如果只有 wfp 支持但 silverlight 不支持的一些用法,请找出这不同。 然后排除这些代码或使用pragma

    #if !WPF
    //Todo
    #endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2010-10-13
      相关资源
      最近更新 更多