Silverlight 4程序集共享问题

Silverlight 4程序集共享问题,silverlight,reference,.net-4.0,silverlight-4.0,code-sharing,Silverlight,Reference,.net 4.0,Silverlight 4.0,Code Sharing,我有一个引用Silverlight 4类库的WPF.NET4.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

我有一个引用Silverlight 4类库的WPF.NET4.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
我想问题一定与这里提到的类似:

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

我有没有办法缩小这个问题的范围?有没有人找到一种从.NET4.0有效引用SL4项目中UI元素的方法


谢谢。

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

using System.Windows.Markup;

[assembly: XmlnsDefinition("http://MyProj/Presentation", "MyProj.Presentation")]
[assembly: XmlnsDefinition("http://MyProj/Presentation", "MyProj.Presentation.Controls")]
这会阻止WPF程序集引用它,从而产生上述错误。只是将名称空间声明移动到WPF项目中以修复

[编辑]

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

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

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

干杯,
亚历克斯

我可能迟到了,但这个问题还没有得到回答

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


这是一个答案还是一个问题?都是,对不起。这是我关于如何解决当前问题的答案,但问题仍然悬而未决……具体地说,我仍然希望找到一种在不提及问题的情况下进行程序集共享的方法。你会建议把这个放在我原来的问题里,还是把它作为一个答案?谢谢,谢谢。还有一个问题:如果我可以编译它,并且我知道我没有使用任何不兼容的曲面,有没有办法欺骗运行时使用程序集?现在我正在尝试共享一个使用System.Xml.Linq的程序集,但我无法加载文件或程序集'System.Xml.Linq,Version=2.0.5.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'或其依赖项之一。我尝试绑定到AppDomain AssemblyResolve事件并在那里手动加载完整的.NET System.Xml.Linq程序集,但随后出现清单定义不匹配异常。