我使用亚音速3(ActiveRecord的模式),以产生用于我的DAL的代码。它使用T4模板(.TT)文件,一旦你保存,生成的代码为你。

我要为我的NANT构建的一部分自动完成这个,但我不能得到这个工作。我知道,MS提供了一个名为TextTransform产生从T4模板代码的工具,但在亚音速模板的情况下,这似乎并没有工作,没有 - 我觉得模板做出有关模板的正在运行的一些假设在Visual Studio中,这似乎并没有工作在命令行。我收到的时候我尝试运行它针对ActiveRecord.tt的错误是:

亚音速\ ActiveRecord.tt(0,0):错误:运行变换:System.InvalidCastException:无法类型 'Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost' 的铸造对象为类型 'System.IServiceProvider'。    在Microsoft.VisualStudio.TextTemplating3d54bbced2424853b667e74a81b9089b。 GeneratedTextTransformation.GetCurrentProject()在C:\ Users \用户matt.roberts \应用程序数据\禄 人\ TEMP \亚音速\ Settings.ttinclude:线103    在Microsoft.VisualStudio.TextTemplating3d54bbced2424853b667e74a81b9089b。 GeneratedTextTransformation.GetConnectionString(字符串的connectionStringName)在C:\ù SERS \ matt.roberts \应用程序数据\本地的\ Temp \亚音速\ Settings.ttinclude:51行    在Microsoft.VisualStudio.TextTemplating3d54bbced2424853b667e74a81b9089b。 GeneratedTextTransformation.get_ConnectionString()在C:\ Users \用户matt.roberts \应用程序数据\ 本地\ TEMP \亚音速\ Settings.ttinclude:线87

有没有人成功地自动完成这一代?

由于

有帮助吗?

解决方案

我写了一篇博客条目,涵盖这个理由有点:

用于从运行T4模板选项。 NET代码

要怎么做你正在尝试做的,需要在亚音速T4模板一些手术。具体来说,您将有不需要Visual Studio来运行的东西(最小)替换所有引用EnvDTE.DTE。如果你只想“搞不定”这可能是这么简单硬编码的一些路径和/或配置信息到你的T4模板。

重要的是要记住,T4模板是围绕.NET代码稍微薄包装是重要的。如果你可以从.NET做到这一点,你可以很容易从T4做到这一点,你就必须设定不同的约束是T4提供内如何理解工作。不同的T4的“主机”(如Visual Studio与TextTransform.exe)的行为以不同的方式,只是因为T4模板下,一台主机运行正常并不并不意味着它会在另一台主机运行正常。

其他提示

setting.ttinclude需要被Visual Studio中的项目内运行,如果你想运行命令行,你将不得不放弃设置文件的连接字符串,而不是指向它在配置文件中,你也可以有以设置一个项目路径。

您SEEE它调用此:

string GetConnectionString(string connectionStringName){
    var _CurrentProject = GetCurrentProject();

    string result="";
    ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
    configFile.ExeConfigFilename = GetConfigPath();

这就是可能问题出在哪里茎,因此,如果您设置这些手,那么你oproblem然后可以解决

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top