SubSonic 3 Автоматически восстанавливать класс ActiveRecord? - PullRequest
1 голос
/ 17 июля 2009

У меня есть база данных SQLite и SubSonic3, наконец-то я понял, как генерировать .cs из .tt в Visual Studio. Мой материал строится сейчас.

Я могу автоматически запустить MSBuild для сборки своего проекта, но я бы хотел добавить событие перед сборкой, чтобы аккуратно восстановить ActiveRecord.cs, чтобы любые изменения базы данных заканчивались там для будущих юнит-тестов.

Как я могу имитировать «запустить внешний инструмент» в графическом интерфейсе Visual Studio?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 12 января 2010

В настоящее время файл Settings.ttinclude SubSonic должен быть запущен из приложения VisualStudio и не может быть запущен из командной строки. Это связано с тем, что Settings.ttinclude использует контекст проекта для поиска файла App.config / Web.config, чтобы он мог найти строку подключения.

Попытка запуска через командную строку с использованием TextTransform.exe приведет к ошибке:

ошибка: выполняется преобразование: System.InvalidCastException: невозможно преобразовать объект типа «Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost» в тип «System.IServiceProvider '.

Это вытекает из этого метода в Settings.ttinclude:

public EnvDTE.Project GetCurrentProject()  {
    IServiceProvider _ServiceProvider = (IServiceProvider)Host;
    ...
}
0 голосов
/ 14 октября 2010

Взломав файл Settings.ttinclude, вы можете настроить Subsonic для запуска из командной строки.

Просто измените его, чтобы установить строку подключения в качестве возвращаемого значения GetConnectionString и исключить всю другую логику.

0 голосов
/ 17 июля 2009

Вы можете запустить инструмент TextTemplating из командной строки:

C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe "path/to/your/ttfile.tt" -out <outFileName>

Используйте TextTransform.exe /help для дополнительных аргументов командной строки, которые вы можете использовать.

...