生成(由T4)文件构建操作重置为构建



我们在Visual Studio 2013中有一个数据库项目。在此项目中,我们有一个.tt文件生成.sql脚本。问题是在生成后,生成文件的构建操作将自动设置为构建。如果我们手动将其更改为无,则将重置为再生后构建(运行自定义工具)。

另一个奇怪的事情是,仅当.tt文件在数据库项目中以及该项目的某些文件夹中(不在根中)时才发生。如果.tt文件在另一个项目(任何地方)或数据库项目的根部中

我们没有任何Visual Studio附加组件,我试图禁用所有可能被禁用的扩展名和更新。

如果需要,我会给您任何详细信息。

在评论中提到了这个答案,但有人可能会错过它。将输出扩展更改为例如" .sqlscript"和默认的构建操作将无。

<#@ output extension=".sqlscript" #>

您还可以将此扩展程序的默认编辑器更改为

" Microsoft SQL Server数据工具,T-SQL编辑器"

因此,您可以将其作为标准T-SQL脚本阅读和编辑。只需转到

工具 ->选项..->文本编辑器 ->文件扩展。

它不能用" .sql"文件解决问题,但这是一个很好的解决方法,对我来说很好。我在VS2015中对其进行了测试,但在VS2013中可能起作用。

如何存储构建操作?在CSPROJ中注意:编译生成的类文件,具有编译

的构建操作

注意:构建动作无

编译生成file.cs

现在将其设置为无。

OK一个更改SQLPROJ的T4模板。注意:这是为SQLPROJ保存一个新文件,而不是在您现有的SQLPROJ上写下,因为您想最少要使用:

  1. 备份您的sqlproj
  2. 在新文件上测试
  3. 将其修改为备份SQLProJ,以防万一。
  4. 有一个非常独特的文件名作为目标。
  5. 将其作为单独的T4模板
  6. 在您的自定义工具之后运行此操作

        <#@ template debug="true" hostSpecific="true" #>
        <#@ output extension=".cs" #>
        <#@ Assembly Name="System.Core" #>
        <#@ import namespace="System" #>
        <#@ import namespace="System.IO" #>
        <#@ import namespace="System.Collections.Generic" #>
        <# 
        string file  = @"C:...MyProject.sqlproj";
    
            string [] lines = System.IO.File.ReadAllLines(file);
    
            //relative path of file you want to change build action
            string target = @"ModelsGeneratedClass.cs";
            //find the line that has your class 
            for(int i = 0; i < lines.Length ; i++)
            {
                if(lines[i].Contains(target))
                {
                    //Replace Compile with None
                    lines[i].Replace("Compile", "None");
                }
            }
            string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
            string outputFileName = "newCSProj.sqlproj";
            string outputFilePath = Path.Combine(templateDirectory, outputFileName);
            File.WriteAllLines(outputFilePath, lines); 
      #>
    

这是在运行文本模板之前的警告视觉工作室显示

安全警告:运行此文本模板可能会损害您的计算机。如果您从不信任的来源获得它,请勿运行它。

最新更新