Кросс-компиляция для .NET 4 и Silverlight 4 в VS2010 без дублирования файлов - PullRequest
4 голосов
/ 26 июля 2010

У нас есть большое количество проектов в рамках решения, в основном простые библиотеки классов (которые позже загружаются через MEF), предназначенные для .NET 4.0.

Мы хотели бы скомпилировать большое их количество для обоих .NET4.0 и среда выполнения Silverlight без дублирования файлов.

Есть ли способ создать новую библиотеку классов Silverlight и связать исходные файлы из других проектов, чтобы компилировать как библиотеку .NET 4.0, так и библиотеку Silverlight 4.0?

Я знаю, что .NET 4.0 может загружать сборки Silverlight 4, но я бы хотел скомпилировать обе версии, а не компилировать все для Silverlight.

Обновление: Однажды я увидел решение, в котором некоторые проекты содержали ссылки на другие файлы в других проектах, поэтому, когда вы изменяли файл в одном проекте, он обновлялся и в другом.Вот что я имею в виду.

альтернативный текст http://i31.tinypic.com/33esow4.png

Скриншот решения, проект Vialis.Led.Interfaces содержит исходные файлы, в проекте silverlight я хочу создать ссылкик этим файлам.

Ответы [ 5 ]

7 голосов
/ 26 июля 2010

Если вы хотите повторно использовать код, у вас есть в основном три варианта:

  • Как правило, все базовые библиотеки классов создаются в виде проекта библиотеки классов Silverlight, поскольку это платформа с наименьшимнабор функций.Выкиньте все ссылки, кроме mscorlib.dll , System.dll и System.Core.dll .Затем вы можете связать такой вид библиотеки Silverlight в любом полном проекте .NET.

  • Вы можете связать отдельные файлы кода из другого проекта с помощью « Добавить как ссылку »функция (правой кнопкой мыши проект -> Добавить существующий элемент -> Изменить кнопку «Добавить» на «Добавить как ссылку»).Таким образом, вы можете создать проект Silverlight и связать отдельные файлы из вашего полного проекта .NET.Однако это может быть утомительно, если у вас много файлов, и вы часто добавляете / удаляете файлы и папки в исходном проекте.

  • Чтобы устранить эту проблему, вы можете обратиться к Project Linker.в http://msdn.microsoft.com/en-us/library/dd458870.aspx ... но я сам еще не пробовал.

4 голосов
/ 26 июля 2010

Просто настройте второй проект для Silverlight, а затем используйте Project->Add Existing Files... для добавления каждого из файлов проекта в проект Silverlight.

Вы также можете использовать частичные классы для выделения функциональности, специфичной для Silverlight или .NET Framework. (Это подход, используемый Prism, кстати.)

3 голосов
/ 18 августа 2011

Microsoft недавно выпустила Portable Library Tools: http://msdn.microsoft.com/en-us/library/gg597391.aspx

Я обязательно посмотрю на них.

0 голосов
/ 27 июля 2010

Как сказано в комментариях к принятому ответу, вы используете стрелку на кнопке «Добавить» в диалоговом окне файла, чтобы выполнить «Добавить как ссылку».

Чтобы добавить еще одну небольшую вещь, которая может пригодиться:Важно помнить, что Silverlight и .NET 4.0 не одно и то же.Если у вас есть код, который компилируется в одном, но не в другом, инструменты dev по умолчанию определяют символ условной компиляции SILVERLIGHT для Silverlight, поэтому вы можете сделать #if SILVERLIGHT.

0 голосов
/ 26 июля 2010

Да.Создайте два проекта в одном каталоге, один с Silverlight, другой обычный.

Вы также можете автоматизировать этот файл .csproj на основе Xml.Удаление, особенно следующего, сделает его обычным:

<ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...