我可以在.NET Core可执行文件中嵌入文件并在运行时读取它吗?

问题描述 投票:0回答:2

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

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

c# .net-core visual-studio-mac
2个回答
0
投票

是,在解决方案资源管理器中右键单击该文件,然后选择复制到输出目录:enter image description here

这将使您的文件被复制到dll目录中,您将可以访问它。


0
投票

该解决方案类似于this答案,对于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();
© www.soinside.com 2019 - 2024. All rights reserved.