我有一个控制台应用程序,当给定特定的命令行参数时,应该将我的应用程序的框架配置文件写入指定的目录。目前,该骨架配置文件现在存在于我的程序集中(在我用于在编译时生成它的t4模板下)。
当我的应用程序使用相关参数运行时,我希望能够在运行时将t4处理的配置文件的结果加载到内存中,然后将其写入磁盘上的任意位置。
我无法弄清楚如何在我的C#代码中引用和加载我的解决方案中的文件。甚至可以将这样的文件资源嵌入到程序集中并从代码中引用它吗?或者我是否需要将文件作为安装过程的一部分放在文件系统上?如果可能的话,我宁愿不必做后者。
非常感谢任何帮助或建议。 :)
答案 0 :(得分:0)
糟糕。在根据此stackoverflow问题进行一些推断后,将其计算出来:“How to embed a text file in a .NET assembly?”
诀窍是将文件的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();