2009-09-22 3 views
0

Я написал генератор кода, используя CodeDom, и он генерирует несколько классов из хранимых процедур. Я хотел бы добавить его выполнение как шаг сборки, а затем добавить все его классы в решение программно во время сборки.Как управлять сгенерированными классами в решении Visual Studio?

Как это сделать?

ответ

1

Использование Custom Build Providers

Subsonic также использует Строить провайдеров генерировать свой DAL и код. Проверьте конфигурацию дозвуковой конфигурации для поставщика настраиваемой сборки. С открытым исходным кодом вы также можете проверить его реализацию.

<configuration> 
    <system.web> 
    <compilation> 
     <buildProviders> 
     <add extension=".abp" type="SubSonic.BuildProvider, SubSonic"/> 
     </buildProviders> 
    </compilation> 
    </system.web> 
</configuration> 

Он использует файл расширения .abp для запуска своего поставщика построения.

Edit: Да Пользовательские построить провайдеры супер особенность ASP.Net. Но традиционные winform или другие разработчики могут использовать задачи MSBuild custom , чтобы получить тот же эффект. Dino Esposito предоставил отличную статью за то же самое. Вы можете проверить это here.

+0

Это очень интересно! Кажется, что эти поставщики пользовательской сборки поддерживают только веб-проекты. Правильно ли я это читаю? –

+0

Вы правы. Поставщики пользовательской сборки - это функция ASP.Net. Но вы можете использовать собственные задачи MSBuild, чтобы получить тот же эффект. Проверьте Правка на мой ответ. – Mahin

+0

Я закончил тем, что делал это как обычную задачу, которая является разговором об отделе. Благодаря! –

0

Я не знаю, как это будет работать, но здесь идет:

Если код CodeDOM генерируется в виде отдельного проекта, создания классов, а затем добавить имена файлов в файл .csproj (это всего лишь XML) библиотеки. Приказало ли оно также построить первое. Затем нужно, чтобы событие предварительной сборки библиотеки запускало приложение для генерации кода, затем оно будет скомпилировано. Когда вы нажмете на VS в следующий раз, он попросит вас перезагрузить, потому что файл проекта изменился, и ваши новые классы должны появиться.

Кажется немного взломанным, но с небольшим количеством сценариев он может быть автоматизирован.