1

我有一个 SQLite 数据库和 SubSonic3,终于知道了如何在 Visual Studio 中从 .tt 生成 .cs。我的东西现在正在构建。

我可以自动启动 MSBuild 来构建我的项目,但我想添加一个预构建事件来干净地重新生成 ActiveRecord.cs,以便任何数据库更改最终都存在于未来的单元测试中。

如何在 Visual Studio GUI 中模拟“运行外部工具”?

谢谢。

4

3 回答 3

0

此时,SubSonic 的 Settings.ttinclude 文件必须从 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;
    ...
}
于 2010-01-11T21:05:57.017 回答
0

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

只需修改它以将您的连接字符串设置为 GetConnectionString 的返回值并取出所有其他逻辑。

于 2010-10-13T23:03:59.743 回答
0

您可以从命令行运行 TextTemplating 工具:

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

TextTransform.exe /help用于您可以使用的更多命令行参数。

于 2009-07-17T04:19:54.743 回答