我在 ASP.Net Core 中有一个项目需要包含来自资源文件的图像(以生成 PDF)。
因此,我使用 Visual Studio 创建了一个新的资源文件(添加 > 新项目 > 资源文件),命名为 Resource.resx
使用托管资源编辑器(Visual Studio 的默认编辑器),我添加了一个名为 logo.png 的新图像。
使用下面列出的方法创建了一个名为 Resource.Designer.cs
的新文件:
public static System.Drawing.Bitmap logo {
get {
object obj = ResourceManager.GetObject("logo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
现在,只是为了测试,我创建了以下代码:
var logo = Resources.logo;
这引发了一个新的异常,内容如下:
发生“System.InvalidCastException”类型的未处理异常。
附加信息:无法将“System.String”类型的对象转换为类型“System.Drawing.Bitmap”。
我也尝试了这个链接中的所有内容: https://weblogs.asp.net/jeff/beating-localization-into-submission-on-asp-net-5
但结果是一样的。
如果我在控制台应用程序上编写此代码,一切正常。
最佳答案
我找到了另一种对我的问题有效的方法。
http://codeopinion.com/asp-net-core-embedded-resource/
只需要在项目上创建一个文件夹(在我的例子中是 Resources),然后在 project.json 中,我包含了以下代码:
"buildOptions": {
"embed": ["Resources/**/*"]
}
然后,我的代码:
var assembly = Assembly.GetExecutingAssembly();
var logoStream = assembly.GetManifestResourceStream("ProjectNamespace.Resources.logo.png");
关于c# - 带资源文件的 asp.net 核心 (resx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551036/