4

我有一个引用 Silverlight 4 类库的 WPF .NET 4.0 类库。

SL 库编译得很好,但是当我编译 WPF 类库时,我得到:

Error   2   Unknown build error, 'Cannot resolve dependency to assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.'    MyProj.Presentation.Wpf

我认为问题必须与此处提到的问题类似:http: //markti.spaces.live.com/blog/cns!D92CF278F0F91957! 273.entry

但我的 WPF 库不包含任何引用我的 SL 库中的用户控件的 XAML。事实上,我的 SL 库中根本没有任何 XAML。但是,它确实有几个共享的 DependencyObject,例如 EventCommander(将 UI 元素事件绑定到命令)和一些 DataTemplate 助手。

有什么办法可以缩小这里的问题吗?有没有人找到一种从 .NET 4.0 有效引用 SL4 项目中的 UI 元素的方法?

谢谢。

4

3 回答 3

4

有谁知道从完整的 .NET 程序集中使用 System.Windows 引用来引用 SL4 程序集的方法(而不仅仅是链接文件并创建两个不同的项目来维护)?

目前是不可能的。仅当 SL 项目不引用除mscorlib、System、System.Core、System.ComponentModel.CompositionMicrosoft.VisualBasic之外的任何程序集时,在 .NET 项目中引用 SL 程序集才有效。添加 WPF 项目并将您的 SL 文件链接到该项目是您可以重用您的 SL 代码(如果它使用例如 System.Windows)的唯一方法。

干杯,亚历克斯

于 2010-06-07T07:37:49.017 回答
2

我可能迟到了,但这还没有回答。

VisualStudio 2010 有一个插件,它允许您创建程序集,可以在 xbox 上的 .NET、Silverlight、Windows Phone 和 XNA 中引用。它被称为便携式图书馆。

http://blogs.msdn.com/b/bclteam/archive/2011/01/19/announcing-portable-library-tools-ctp-justin-van-patten.aspx

于 2011-05-04T10:05:06.487 回答
0

找到了!我在我的 SL4 类库中定义了一些 xmlns 命名空间,例如:

using System.Windows.Markup;

[assembly: XmlnsDefinition("http://MyProj/Presentation", "MyProj.Presentation")]
[assembly: XmlnsDefinition("http://MyProj/Presentation", "MyProj.Presentation.Controls")]

并且阻止了 WPF 程序集引用它,从而产生了上述错误。刚刚将命名空间声明移到 WPF 项目中以修复...

[编辑]

好的,所以这解决了问题......但是有没有人知道使用 System.Windows 引用从完整的 .NET 程序集中引用 SL4 程序集的方法(不只是链接文件并创建两个不同的项目来维护)?

于 2010-06-05T22:43:39.230 回答