System.Xml.Linq, переносимые библиотеки и Silverlight

Я создал переносимую библиотеку классов (profile47, которая включает Silverlight 5), которая ссылается на System.Xml.Linq. Я могу ссылаться на эту переносную библиотеку из моего приложения Silverlight 5, и я могу ссылаться на Silverlight-версию System.Xml.Linq в C: \ Program Files (x86) \ Microsoft SDKs \ Silverlight \ v5.0 \ Libraries \ Client. Проблема в том, что эта dll System.Xml.Linq имеет другой номер версии (5.0.5.0), чем тот, на который ссылается переносимая библиотека, и когда я запускаю приложение Silverlight, оно выдает исключение:

Could not load file or assembly 'System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.

Поскольку в app.config нет механизма перенаправления сборки, как в полной платформе .NET, есть ли способ заставить эту работу работать?


person Gustavo Guerra    schedule 31.01.2013    source источник
comment
Я думаю, вам следует удалить старую ссылку и добавить новую ссылку для System.link Version = 5.0.5.0   -  person Jignesh.Raj    schedule 01.02.2013
comment
Я не могу ссылаться на версию Silverlight 5.0.5.0 в версии переносимой библиотеки, только на версию 4.0.0.0   -  person Gustavo Guerra    schedule 01.02.2013


Ответы (1)


Удалите ссылку System.Xml.Linq из переносимой библиотеки классов. Переносимого подмножества .Net достаточно, если в вашем профиле есть .net framework 4.0.3.

person pauldendulk    schedule 01.02.2013
comment
Я не могу удалить ссылку, потому что я использую xml.linq в переносимой библиотеке - person Gustavo Guerra; 01.02.2013
comment
Да, вы можете удалить его, даже если используете Xml.Linq. Если вы получаете ошибки компиляции, это потому, что ваш профиль не позволяет этого. - person pauldendulk; 02.02.2013
comment
Профиль позволяет это, но я получаю ошибки времени компиляции. Я повторно использую одну и ту же портативную библиотеку в приложениях Widows 8 и Windows Phone, только ссылка из жалоб silverlight на разные версии сборок system.xml.linq - person Gustavo Guerra; 03.02.2013
comment
Не могли бы вы удалить ссылку на System.Xml.Linq из вашего PCL и сообщить мне, какие ошибки компиляции вы получаете? - person pauldendulk; 04.02.2013
comment
Я дважды проверил, и проблема заключалась в том, что я ссылался на другой PCL, который также ссылался на System.Xml.Linq, после того, как я удалил его из всех, у меня больше нет ошибок времени компиляции, и если я буду ссылаться на System.Xml.Linq только в сборке Silverlight, теперь он работает во время выполнения. Спасибо - person Gustavo Guerra; 04.02.2013