为什么 GetManifestResourceStream returns 为空(使用 dotnet 核心)

Why does GetManifestResourceStream returns null (with dotnet core)

使用 dotnet 核心:.NET Core SDK 版本:3.1.102

为什么下面返回 null

typeof(MyClassName).GetTypeInfo().Assembly.GetManifestResourceStream("MyFile.cs")

我已验证该文件存在于解决方案中并且在属性“嵌入式资源

中具有生成操作

文件名必须包含程序集的"root namespace",例如"My.Namespace.MyFile.cs"。 Is 通常是程序集的名称,但可以在 .csproj 文件中更改。

您可以查看可用的资源名称:

string[] names = this.GetType().Assembly.GetManifestResourceNames();

然后如果资源存在,写入正确的资源名称

加载嵌入了资源程序集,遍历GetManifestResourceNames找到完全合格的资源名称然后用于GetManifestResourceStream.

你可以试试

var assembly = Assembly.LoadFrom(Assembly.GetAssembly(typeof(MainWindow)).Location);
string[] names = assembly.GetManifestResourceNames();
var stream = assembly.GetManifestResourceStream(names[0]);

只是对 .NET 5 的更新。帮助我找出资源名称以帮助解决我在 .NET 5 中的问题的是以下内容:

string[] names = Assembly.GetCallingAssembly().GetManifestResourceNames();

                foreach (var name in names)
                {
                    Console.WriteLine(name);
                }