Это вопрос рабочего процесса. ASP.NET является генератором кода. Механизм синтаксического анализа XAML фактически генерирует C #, прежде чем он преобразуется в MSIL. Когда генератор кода становится внешним продуктом, таким как CodeSmith, который изолирован от вашего рабочего процесса разработки, необходимо соблюдать особую осторожность, чтобы синхронизировать ваш проект. Например, если сгенерированный код является выводом ORM, и вы вносите изменения в схему базы данных, вам придется либо полностью отказаться от генератора кода, либо воспользоваться возможностью C # работать с частичными классами (что позволяет добавлять члены и функциональность для существующего класса, не наследуя его).
Мне лично не нравится изолированная / Alt-Tab природа рабочих процессов генератора; если генератор кода не является частью моей IDE, то я чувствую, что это бред. Некоторые генераторы кода, такие как Entity Spaces 2009 (еще не выпущены), более интегрированы, чем генераторы предыдущих поколений.
Я думаю, что панацея от цели генераторов кода может быть использована в процедурах предварительной компиляции. В C # и других языках .NET этого нет, хотя ASP.NET это нравится, поэтому, скажем, SubSonic так хорошо работает для ASP.NET, но не намного. SubSonic генерирует код C # во время сборки незадолго до начала нормальной компиляции ASP.NET.
Попросите поставщика инструментов (например, Microsoft) более тщательно поддерживать процедуры предварительной сборки, чтобы генераторы кода могли быть интегрированы в рабочий процесс ваших решений с использованием метаданных, а не управляться вручную как внешние файлы кода, которые необходимо поддерживать. в изоляции.
Jon