Существует несколько способов избежать дублирования.
Наиболее фундаментальным подходом было бы использование двух разных проектов, один из которых нацелен на .NET Framework, а другой на Silverlight. Таким образом, их ссылки указывают на соответствующий набор сборок, а проект Silverlight определяет символ условной компиляции #SILVERLIGHT
. Однако они используют один и тот же набор файлов кода, то есть один будет использовать связанные файлы. Вы должны переключаться между частями, если нужно сделать иначе, используя условную компиляцию.
Службы RIA WCF также предлагают механизм, в котором вы помещаете код в файлы * .shared.cs в проекте на стороне сервера, который автоматически дублируется в папку «Generated_Code» в проекте на стороне клиента.
Существует способ обмениваться единым набором кода и одной выходной DLL между Silverlight 4 и .NET 4.0. Однако вам нужно будет ограничить ссылки на очень узкий набор файлов. См. Совместное использование сборок Silverlight с приложениями .NET
.