我可以在 .NET Core 可执行文件中嵌入文件并在运行时读取它吗?
Can I embed a file in a .NET Core executable and read it at runtime?
我有一些 JSON 文件与我的项目位于同一文件夹中,我可以使用我的 C# (.NET Core 3.1) 应用程序从磁盘读取这些文件,我想在运行时读取它们,但是将整个解决方案编译为一个可执行文件。
我相信 .NET Framework 中的嵌入式资源可以实现类似的功能,但我可以使用在 VS 中为 Mac 开发的 .NET Core 应用程序实现这一点吗?
解决方案类似于 答案,只是 VS Mac 和 .NET Core 3.1 略有不同。
我通过将文件添加到我的 C# 项目,然后将它们的构建操作设置为 'Embedded Resource' 来实现我正在寻找的东西。它在 VS 中用于 Mac 2019:
要阅读它们,语法(假设您在与文件相同的项目中的 class 中)是:
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();
我有一些 JSON 文件与我的项目位于同一文件夹中,我可以使用我的 C# (.NET Core 3.1) 应用程序从磁盘读取这些文件,我想在运行时读取它们,但是将整个解决方案编译为一个可执行文件。
我相信 .NET Framework 中的嵌入式资源可以实现类似的功能,但我可以使用在 VS 中为 Mac 开发的 .NET Core 应用程序实现这一点吗?
解决方案类似于
我通过将文件添加到我的 C# 项目,然后将它们的构建操作设置为 'Embedded Resource' 来实现我正在寻找的东西。它在 VS 中用于 Mac 2019:
要阅读它们,语法(假设您在与文件相同的项目中的 class 中)是:
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();