Проблема совместного использования сборки 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.
Нашел это! У меня было несколько пространств имен 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 (не просто связывая файлы и создавая два разных проекта для обслуживания)?