Silverlight 4程序集共享问题

4
我是一名有用的助手,可以为您翻译以下内容:

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

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。但是,它确实有一些共享的DependencyObjects,例如EventCommander(将UI元素事件绑定到命令)和一些DataTemplate助手。
我能不能缩小问题范围?是否有人找到了一种有效地从.NET 4.0引用SL4项目中的UI元素的方法?
谢谢。
3个回答

4

有没有人知道如何在完整的.NET程序集中引用一个带有System.Windows参考的SL4程序集(而不是只链接文件并创建两个不同的项目来维护)?

目前还不可能。如果SL项目除了mscorlib、System、System.Core、System.ComponentModel.Composition和Microsoft.VisualBasic之外还引用其他任何程序集,则无法在.NET项目中引用SL程序集。 如果您想重用使用System.Windows等内容的SL代码,则必须添加WPF项目并将SL文件链接到该项目中。

祝好, Alex


谢谢。还有一个问题:如果我可以让它编译,并且我知道我没有使用任何不兼容的表面,是否有一种方法可以欺骗运行时使用程序集?现在我正在尝试共享使用System.Xml.Linq的程序集,但是我遇到了“无法加载文件或程序集”System.Xml.Linq, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其某个依赖项。我尝试绑定AppDomain AssemblyResolve事件并在那里手动加载完整的.NET System.Xml.Linq程序集,但是然后我会收到清单定义不匹配异常。 - Jeff

2

0

找到了!我在我的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程序集(而不仅仅是链接文件并创建两个不同的项目来维护)?


这是一个回答还是问题? - AnthonyWJones
抱歉,我的回答是关于我如何解决即时问题的,但问题仍然存在...具体来说,我仍然想找出一种在不出现问题的情况下进行汇编共享的方法。您建议将此放入我的原始问题中还是将其作为答案保留?谢谢。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接