Ошибки при обращении к библиотеке классов Silverlight из приложения WPF - PullRequest
3 голосов
/ 04 июня 2011

У меня есть приложение WPF и приложение Silverlight. Они оба используются для отображения карты и имеют одни и те же функции.

Я создал проект библиотеки классов Silverlight, чтобы оставаться СУХИМЫМ. Я ссылаюсь на это из Silverlight и WPF. Он содержит некоторые служебные методы, которые полезны в обоих проектах. Например, у меня есть этот метод:

public static void CenterText(TextBlock name, Polygon poly)

Проект Silverlight не имеет проблем с этим. Однако при вызове этого из моего приложения WPF я получаю следующую ошибку:

Тип 'System.Windows.Shapes.Polygon' определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку 'System.Windows, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e'

Однако у меня есть эта строка вверху файла:

using System.Windows.Shapes;

так что WPF отлично видит класс Polygon. Я предполагаю, что библиотека классов silverlight использует версию фреймворка, несовместимую с версией, используемой в проекте WPF.

Таким образом, вопрос в том, застрял ли я при переписывании одного и того же кода в моем приложении WPF или есть какой-то способ, которым я могу поделиться между ними?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 04 июня 2011

Вы правы, Silverlight использует совершенно отдельную версию фреймворка. Это намного, намного меньше, чем событие .NET client runtime.

Это означает, что вы не можете смешивать сборки WPF и Silverlight в одном приложении.

3 голосов
/ 22 ноября 2013

Я столкнулся с этой ошибкой, потому что я скачал Expression Blend SDK для Silverlight вместо того, что я ДОЛЖЕН загрузить: Microsoft Expression Blend Software Development Kit (SDK) для .NET 4. Его можно найти на веб-сайте MSFT, здесь:

http://www.microsoft.com/en-us/download/details.aspx?id=10801

Как только я скачал Expression Blend SDK для .Net, удалил весь Blend SDK для ссылок Silverlight и добавил те же ссылки, что и Blend для .Net, ябыл в рабочем состоянии.

2 голосов
/ 04 июня 2011

В Silverlight класс находится в System.Windows.dll, а в WPF - в PresentationFramework.dll библиотека пытается получить сборку Silverlight, на которую по умолчанию нет ссылки в приложении WPF.

...