У меня есть 3 сборки, приложение WP7 (с таргетингом на 7.0), проект веб-сервисов (под управлением 4.0) и Portable Class Library (созданная из шаблона с таргетингом на WP7, SL4 и .NET 4.0), которая содержит общий тип используется между первыми двумя.
При локальном запуске (в IIS Express) все работает просто отлично, однако при запуске с развернутым экземпляром сборки веб-служб (на удаленном сервере IIS, которым я мало контролирую) происходит сбой со следующим исключением:
System.IO.FileNotFoundException: не удалось загрузить файл или сборку
'System.Xml.Serialization, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = b77a5c561934e089 'или одна из его зависимостей.
система не может найти указанный файл. Имя файла:
'System.Xml.Serialization, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = b77a5c561934e089 '---> System.IO.FileNotFoundException:
Не удалось загрузить файл или сборку 'System.Xml.Serialization,
Версия = 2.0.5.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35,
Retargetable = Yes 'или одна из его зависимостей. Система не может найти
указанный файл Имя файла: 'System.Xml.Serialization,
Версия = 2.0.5.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35,
Настраиваемый = Да
Stacktrace указывает, что он находится на первом вызове в PCL, что имеет смысл, если это сбой загрузки типа, как описано выше.
Если я удаляю ссылку на сборку PCL, а затем добавляю файл класса ключей в обе сборки, все работает нормально, однако я хочу избежать такого дублирования кода ... поэтому возникает вопрос: Почему это происходит? Как я могу настроить PCL для работы как написано?
РЕДАКТИРОВАТЬ: немного больше информации ... мой PCL использует XmlSerializer , что-то, что находится в System.Xml.dll на рабочем столе и в System.Xml.Serialization.xml в Silverlight ... сборка, которая не существует в полной среде рабочего стола ... так что этот сбой имеет некоторый смысл, только в мире PCL, некоторые из этих сборок / классов разбиты сами по себе
В этом случае XmlSerializer фактически находится в C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework.NETPortable \ v4.0 \ Profile \ Profile2 \ System.Xml.Serialization.dll (на который ссылается PCL) ... в качестве теста я добавил ту же ссылку на веб-проект ... однако во время выполнения веб-проекта он терпит неудачу с желтым экраном смерти, утверждая, что:
Не удалось загрузить файл или сборку 'System.Xml.Serialization' или одну из
его зависимости. Определение манифеста расположенной сборки не
сопоставьте ссылку на сборку. (Исключение из HRESULT: 0x80131040)