Проблема совместного использования сборки Silverlight 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 не содержит XAML, который ссылается на пользовательский элемент управления из моей библиотеки SL. На самом деле, моя библиотека SL не имеет никакого XAML вообще. Однако у него есть несколько общих объектов DependencyObject, таких как EventCommander (привязка событий элемента пользовательского интерфейса к командам) и некоторые помощники DataTemplate.

Есть ли способ, которым я могу сузить проблему здесь? И кто-нибудь нашел способ эффективной ссылки на элементы пользовательского интерфейса в проекте SL4 из.NET 4.0?

Благодарю.

3 ответа

Решение

Этот

Кто-нибудь знает, как ссылаться на сборку SL4 со ссылками System.Windows из полной сборки.NET (не просто связывая файлы и создавая два разных проекта для обслуживания)?

не возможно в данный момент. Ссылка на сборки SL в проектах.NET будет работать только в том случае, если проект SL не ссылается ни на какие сборки, кроме mscorlib, System, System.Core, System.ComponentModel.Composition и Microsoft.VisualBasic. Добавление проекта WPF и связывание файлов SL в этот проект - единственный способ повторно использовать код SL, если он использует, например, System.Windows.

Ура, Алекс

Возможно, я опоздал, но на этот вопрос еще не ответили.

Существует плагин для VisualStudio 2010, который позволяет создавать сборки, на которые можно ссылаться в.NET, Silverlight, Windows Phone и XNA на xbox. Это называется PortableLibrary.

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

Нашел это! У меня было несколько пространств имен xmlns, определенных в моей библиотеке классов SL4, например:

using System.Windows.Markup;

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

и это препятствовало тому, чтобы сборка WPF ссылалась на него, вызывая вышеупомянутую ошибку. Просто переместил объявления пространства имен в проект WPF, чтобы исправить...

[Редактировать]

Итак, это решило проблему... но кто-нибудь знает, как ссылаться на сборку SL4 с помощью ссылок System.Windows из полной сборки.NET (не просто связывая файлы и создавая два разных проекта для обслуживания)?

Другие вопросы по тегам