Проблема совместного использования сборки Silverlight 4 - PullRequest
4 голосов
/ 06 июня 2010

У меня есть библиотека классов 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 ]

4 голосов
/ 07 июня 2010

это

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

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

Cheers, Alex

2 голосов
/ 04 мая 2011

Я, может быть, опоздал, но на этот вопрос еще не ответили.

Существует плагин для 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

0 голосов
/ 06 июня 2010

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

...