C# 如何以编程方式在Visual Studio解决方案/程序集中加载文件?

C# 如何以编程方式在Visual Studio解决方案/程序集中加载文件?,c#,.net,visual-studio,t4,C#,.net,Visual Studio,T4,我有一个控制台应用程序,当给定一个特定的命令行参数时,它应该将我的应用程序的框架配置文件写入指定的目录。目前,该骨架配置文件现在位于我的程序集中(在编译时用于生成它的t4模板下) 当我的应用程序使用相关参数运行时,我希望能够在运行时将t4处理的配置文件的结果加载到内存中,然后将其写入磁盘上的任意位置 我不知道如何在我的C代码中引用和加载解决方案中的文件。甚至可以将这样的文件资源嵌入到程序集中并从代码中引用它吗?或者作为安装过程的一部分,我需要将文件放在文件系统上吗?如果可能的话,我宁愿不做后者

我有一个控制台应用程序,当给定一个特定的命令行参数时,它应该将我的应用程序的框架配置文件写入指定的目录。目前,该骨架配置文件现在位于我的程序集中(在编译时用于生成它的t4模板下)

当我的应用程序使用相关参数运行时,我希望能够在运行时将t4处理的配置文件的结果加载到内存中,然后将其写入磁盘上的任意位置

我不知道如何在我的C代码中引用和加载解决方案中的文件。甚至可以将这样的文件资源嵌入到程序集中并从代码中引用它吗?或者作为安装过程的一部分,我需要将文件放在文件系统上吗?如果可能的话,我宁愿不做后者


任何帮助或建议都将不胜感激。:)

哎呀。在根据这个stackoverflow问题做出一些推论之后,我发现了这一点:

诀窍是将文件的Build Action属性设置为“Embedded resource”。(请注意,设置此属性是为了t4模板生成的结果,而不是模板本身。)

然后它将嵌入到程序集中,您可以在代码中引用它

var assembly = Assembly.GetExecutingAssembly();
string configFileContents;
using(StreamReader reader = new StreamReader(assembly.GetManifestResourceStream("MySolutionNamespace.ContainingFolder.SiteConfiguration.json"), Encoding.Unicode))
{
    configFileContents = reader.ReadToEnd();
}

Console.WriteLine(configFileContents);
Console.ReadKey();