2014-09-07 1 views
0

Я использую Roslyn для некоторого генерации кода в одном из моих проектов C#. В настоящее время Roslyn возьмет весь проект, скомпилирует его с нуля, а затем выплюнет код, который я хочу. Это требует полной перекомпиляции, что немного медленнее. Когда Visual Studio компилирует проект, он не делает это с нуля каждый раз, он делает что-то умное и только перекомпилирует части, которые были изменены. Есть ли способ сделать это с Рослином?Как я могу избежать полной перекомпиляции при компиляции проекта C# с Roslyn?

+0

"Incremental build" - это термин, который вы ищете. –

+0

C# никогда не поддерживал инкрементные сборки. – SLaks

+1

Вы пропустили какую-то ключевую информацию. Visual Studio не очень умна, но полагается на механизм MSBuild, чтобы посмотреть, какие проекты уже обновлены. Эта часть тоже не в Рослине. –

ответ

3

Visual Studio (в следующей версии) использует Roslyn для компиляции кода (в IL). Для одного проекта, который не является инкрементным и никогда не был.

+0

Я знал, что Roslyn был использован предстоящим VS. Я не знал, что VS не выполняет инкрементную компиляцию. Теперь мне любопытно, почему «чистые» повторные сборки занимают больше времени, чем регулярные сборки в моем опыте. Наверное, потому, что я работаю с большим количеством объектов изображения, которые нужно переписать в выходной каталог. – TheEzEzz

+0

Когда MSBuild выполняет пересоединение, мы попытаемся избежать перестройки _projects_, если мы увидим, что результат сборки обновлен, с помощью обычной метки времени проверяет la Makefile. Но как только файл был изменен, мы перестраиваем весь проект, и все его нисходящие иждивенцы. –

1

Возможно, я ошибаюсь, поскольку я не уверен в Roslyn, но вы можете разделить код Roslyn на другое решение и иметь отдельное решение для своего собственного кода.

После этого вы можете просто создать решение, которое будет меняться все время.