亚音速3自动重新生成ActiveRecord类?

亚音速3自动重新生成ActiveRecord类?,activerecord,msbuild,subsonic3,Activerecord,Msbuild,Subsonic3,我有一个SQLite数据库和SubSonic3,最终得到了如何在VisualStudio中从.tt生成.cs的线索。我的东西现在可以建好了 我可以自动启动MSBuild来生成我的项目,但我想添加一个预生成事件来干净地重新生成ActiveRecord.cs,以便任何数据库更改都可以在那里结束,以便将来进行单元测试 如何在VisualStudioGUI中模拟“运行外部工具” 谢谢。您可以从命令行运行文本模板工具: C:\Program Files\Common Files\Microsoft Sha

我有一个SQLite数据库和SubSonic3,最终得到了如何在VisualStudio中从.tt生成.cs的线索。我的东西现在可以建好了

我可以自动启动MSBuild来生成我的项目,但我想添加一个预生成事件来干净地重新生成ActiveRecord.cs,以便任何数据库更改都可以在那里结束,以便将来进行单元测试

如何在VisualStudioGUI中模拟“运行外部工具”


谢谢。

您可以从命令行运行文本模板工具:

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

使用
textcransform.exe/help
获取更多可以使用的命令行参数。

此时,必须从VisualStudio应用程序中运行亚音速的Settings.t包含文件,而不能从命令行运行。这是因为Settings.ttinclude使用项目上下文来定位App.config/Web.config文件,以便它可以查找连接字符串

尝试使用TextTransform.exe通过命令行运行将导致错误:

错误:正在运行转换:System.InvalidCastException:无法将类型为“Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost”的对象强制转换为类型为“System.IServiceProvider”

这源自设置中的此方法。t包括:

public EnvDTE.Project GetCurrentProject()  {
    IServiceProvider _ServiceProvider = (IServiceProvider)Host;
    ...
}

通过破解Settings.ttinclude文件,您可以将亚音速设置为从命令行运行


只需修改它,将连接字符串设置为GetConnectionString的返回值,并去掉所有其他逻辑

亚音速要求您从visualstudio中运行它的t4模板,因此无法从命令行成功运行它们。我不明白亚音速为什么需要这样做。我找到了这个链接,但不确定它是否适用。