我有一个 SQLite 数据库和 SubSonic3,终于知道了如何在 Visual Studio 中从 .tt 生成 .cs。我的东西现在正在构建。
我可以自动启动 MSBuild 来构建我的项目,但我想添加一个预构建事件来干净地重新生成 ActiveRecord.cs,以便任何数据库更改最终都存在于未来的单元测试中。
如何在 Visual Studio GUI 中模拟“运行外部工具”?
谢谢。
我有一个 SQLite 数据库和 SubSonic3,终于知道了如何在 Visual Studio 中从 .tt 生成 .cs。我的东西现在正在构建。
我可以自动启动 MSBuild 来构建我的项目,但我想添加一个预构建事件来干净地重新生成 ActiveRecord.cs,以便任何数据库更改最终都存在于未来的单元测试中。
如何在 Visual Studio GUI 中模拟“运行外部工具”?
谢谢。
此时,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;
...
}
通过破解 Settings.ttinclude 文件,您可以将 Subsonic 设置为从命令行运行。
只需修改它以将您的连接字符串设置为 GetConnectionString 的返回值并取出所有其他逻辑。
您可以从命令行运行 TextTemplating 工具:
C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe "path/to/your/ttfile.tt" -out <outFileName>
TextTransform.exe /help
用于您可以使用的更多命令行参数。