为什么 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);
}
使用 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);
}