C#:如何在编译时读取文件

时间:2016-06-03 19:49:31

标签: c#

假设我的Visual Studio项目中存储了一个文本文件(例如SQL查询)。有什么办法可以将文件的内容保存到编译时的变量 吗?我只想在自己的文件中有一些文本,而不是在我的源代码中有一个非常长的引用字符串;但我不想让必须部署(或跟踪)文件的麻烦。

1 个答案:

答案 0 :(得分:0)

您可以使用T4模板执行此操作。你需要的是3件事

  1. 创建模板文件,该文件将生成您的.cs代码
  2. 将您的文本文件(或* .sql文件)包含在与模板文件相同的项目中
  3. Configure your template to re-create your t4 template on every build
  4. 您的template.tt文件

    这样的内容
    <#@ template debug="true" hostSpecific="true" #>
    <#@ output extension=".cs" #>
    <#@ Assembly Name="System.Core" #>
    <#@ Assembly Name="System.Windows.Forms" #>
    <#@ import namespace="System" #>
    <#@ import namespace="System.IO" #>
    <#
       string TextFromFile = File.ReadAllText(Host.ResolvePath("my_file_next_to_my_template.txt"));
    #>
    // This is the output code from your template
    namespace MyNameSpace
    {
        class MyGeneratedClass
        {
            static void main (string[] args)
            {
                System.Console.WriteLine("<#= TextFromFile #>");
            }
        }
    }
    

    如果您不想将您的模板配置为在构建中重新创建,那么只需打开它并保存即可。