我能否将文件嵌入到.NET Core可执行文件中并在运行时读取?

3

我有一些JSON文件与我的C# (.NET Core 3.1)应用程序位于同一个文件夹中,我可以从磁盘读取它们,而我希望在运行时读取它们,但将整个解决方案编译为一个可执行文件。

我相信在.NET Framework中使用嵌入式资源是可能的,但我能否在使用VS for Mac开发的.NET Core应用程序中实现这一点?


1
这个回答解决了你的问题吗?在 .Net Core 库中嵌入资源 - undefined
那个答案看起来可能有效,谢谢。我明天会试一下,如果解决了问题,我会将我的问题标记为重复的。 - undefined
1
你链接的答案几乎是正确的,尽管对于.NET Core 3.1来说有些微小的差异,属性名称等并不完全相同。 - undefined
1个回答

3
这个解决方案类似于 这个 答案,只是在VS Mac和.NET Core 3.1上略有不同。
我通过将文件添加到我的C#项目中,然后将它们的构建操作设置为“嵌入式资源”,来实现了我想要的结果。在VS for Mac 2019中,可以在此处找到: EmbeddedResource in VS Mac 要读取它们,语法(假设你在与文件相同的项目中的一个类中)是:
var assembly = typeof(MyClass).Assembly;
Stream myFile = assembly.GetManifestResourceStream("MyProject.MyFolder.MyFile.json");

// To get the text as a string
var sR = new StreamReader(myFile);
var myFilesText = sR.ReadToEnd();
sR.Close();

如果你不确定它们的名称,你可以使用以下命令列出资源:

string[] names = assembly.GetManifestResourceNames();

可以在运行时编写吗? - undefined
运行时写入嵌入式资源?我不确定,但是您可以尝试在myFile流上使用StreamWriter。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接