C# 为什么GetManifestResourceStream返回null(使用dotnet核心)

C# 为什么GetManifestResourceStream返回null(使用dotnet核心),c#,.net,.net-core,reflection,.net-assembly,C#,.net,.net Core,Reflection,.net Assembly,使用dotnet core:.NET core SDK版本:3.1.102 为什么下面的返回值为null ? 我验证了该文件存在于解决方案中,并且在属性“嵌入资源”中具有生成操作。该文件的名称必须包含程序集的“根命名空间”,例如,“My.namespace.MyFile.cs”。通常是程序集的名称,但它可以在.csproj文件中更改。您可以检查哪些资源名称可用: string[] names = this.GetType().Assembly.GetManifestResourceNames()

使用dotnet core:.NET core SDK版本:3.1.102

为什么下面的返回值为null
?


我验证了该文件存在于解决方案中,并且在属性“嵌入资源”中具有生成操作。

该文件的名称必须包含程序集的“根命名空间”,例如,“My.namespace.MyFile.cs”。通常是程序集的名称,但它可以在.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]);

好的-我这样做了-名称不包含我感兴趣的名称-那么我现在能做什么?即使我尝试使用名称列表中的一个现有名称,我也会得到空值-有什么想法吗?@Danielle您是否尝试将该文件的构建操作设置为
嵌入式资源
?@Danielle好-无法解释-但是-中的一个名称名称列表实际上是我要查找的文件(“MyFile.cs”)中的第一个类-使用这个类名而不是文件名实际上是有效的这种方法已经在另一个答案中解释过了,不适用于OPS谢谢你的答案-但是真正让我明白发生了什么的是打印出名称列表-正如所选答案中所建议的:),因为我使用的文件名已经正如您在这里指出的,使用根名称空间,这对我没有多大帮助
var assembly = Assembly.LoadFrom(Assembly.GetAssembly(typeof(MainWindow)).Location);
string[] names = assembly.GetManifestResourceNames();
var stream = assembly.GetManifestResourceStream(names[0]);