【问题标题】:Can I embed a file in a .NET Core executable and read it at runtime?我可以在 .NET Core 可执行文件中嵌入文件并在运行时读取它吗?
【发布时间】:2020-01-26 00:03:02
【问题描述】:

我的项目所在的文件夹中有一些 JSON 文件,我可以使用 C# (.NET Core 3.1) 应用程序从磁盘读取这些文件,我想在运行时读取它们,然后将整个解决方案编译为一个可执行文件。

我相信 .NET Framework 中的嵌入式资源也可以实现类似的功能,但我可以通过在 VS for Mac 中开发的 .NET Core 应用来实现这一点吗?

【问题讨论】:

  • 这能回答你的问题吗? Embedded resource in .Net Core libraries
  • 这个答案似乎可行,谢谢。如果它解决了问题,我将在明天尝试并关闭我的问题作为重复。
  • 您链接的答案几乎是正确的,尽管对于 .NET Core 3.1 略有不同,属性名称等也完全相同。

标签: c# .net-core visual-studio-mac


【解决方案1】:

解决方案类似于this 的回答,只是对于 VS Mac 和 .NET Core 3.1 略有不同。

我通过将文件添加到我的 C# 项目中,然后将它们的构建操作设置为“嵌入式资源”来实现我想要的。它在 VS for Mac 2019 中:

要阅读它们,语法(假设您与文件在同一个项目中的一个类中)是:

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();

【讨论】:

  • 可以在Runtime上写吗?
  • 在运行时写入嵌入资源?我不确定,尽管您可以尝试在 myFile 流上使用 StreamWriter
猜你喜欢
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2014-03-11
  • 2016-12-25
  • 1970-01-01
相关资源
最近更新 更多