Я столкнулся с аналогичными потребностями при работе с компактными сборочными фреймворками, которые я также хотел собрать для полной фреймворк Я опишу, как мне обойти этот сценарий.
Если существуют какие-либо проблемы со ссылкой на сборку Silverlight, рассмотрите возможность создания двух проектов следующим образом:
Project # 1 будет вашей библиотекой Silverlight и должен содержать все исходные файлы, которые вы хотите использовать на клиенте.
Project # 2 будет вашей службой Windows. Вместо непосредственного включения исходных файлов используйте «Добавить существующий элемент», найдите исходный исходный файл в проекте № 1, затем (и это magic ) нажмите на кнопку «Добавить», чтобы выбрать вместо этого: выберите «Добавить как ссылку».
Включая исходный файл в качестве ссылки, вы сохраняете возможность хранить исходный код в одном месте, но добавляете возможность компилировать ваш код для нескольких сред. Пока код опирается на сборки, доступные как в платформе Silverlight, так и в полной платформе .NET, то вы - деньги.
Теперь, независимо от того, выбираете ли вы мультипроектный подход, знайте, что у классов контекста домена есть дополнительные конструкторы, которые позволяют вам указывать контекстную информацию, такую как URL, для соответствующей доменной службы. Я использую следующий код в одном приложении для создания контекста домена для службы домена, которая предоставляет данные о персонале:
var context = new PersonnelDomainContext(
new Uri(ConfigurationManager.AppSettings["PersonnelServiceUrl"]))
В этом случае URL выглядит примерно так:
http://website-url/Services/Hyphenated-Namespace-PersonnelDomainService.svc
Конечно, при написании службы Windows ничто не мешает вам напрямую ссылаться на серверную службу (не контекстную) сборку. Имея доменную службу в руках, вы можете создать экземпляр службы без дополнительной настройки и дополнительной сетевой нагрузки XML. У этого подхода есть свои недостатки, такие как утрата централизованного управления конфигурацией (например, строк подключения), но в зависимости от обстоятельств вы можете найти, что компромиссы того стоят.
Удачного кодирования!