Asp.net核心与资源文件(resx)
本文关键字:resx 源文件 资源 net 核心 Asp | 更新日期: 2023-09-27 18:17:23
我有一个项目在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;
抛出一个新的异常,内容如下:
An unhandled exception of type 'System.InvalidCastException' occurred.
Additional Information: Unable to cast object of type 'System.String' to type 'System.Drawing.Bitmap'.
我也试过这个链接的所有内容:https://weblogs.asp.net/jeff/beating-localization-into-submission-on-asp-net-5
,但结果是一样的。
如果我在控制台应用程序上编写这段代码,一切都能正常工作。
我找到了另一种解决我问题的方法。
http://codeopinion.com/asp-net-core-embedded-resource/只需要在项目上创建一个文件夹(在我的情况下是资源),然后在项目中。在json中,我包含了以下代码:
"buildOptions": {
"embed": ["Resources/**/*"]
}
然后,我的代码:
var assembly = Assembly.GetExecutingAssembly();
var logoStream = assembly.GetManifestResourceStream("ProjectNamespace.Resources.logo.png");
如果你正在使用。net core 3.1 api,你可以-
-
在ConfigureServices方法(Startup.cs)中增加
services.AddLocalization();
-
在项目中添加Resource.en- us文件。在Name和Value列中分别添加TestKey和Hello,用于测试。
-
添加一个与Resource.cs同名的类文件
-
在控制器中添加一个变量-
private readonly IStringLocalizer _localizer;
并注入构造函数-
public TestController(IStringLocalizer<Resource> localizer)
{
_localizer = localizer;
}
- 读取资源名的值为-
_localizer["TestKey"]
,您将获得Hello(即在步骤#2中输入)更多详情请访问- [https://www.syncfusion.com/blogs/post/how-to-use-localization-in-an-asp-net-core-web-api.aspx]
我使用的是Visual Studio 2017 (csproj文件),这个解决方案对我有用:https://stackoverflow.com/a/39368856/812610
Open Solution Explorer add files you want to embed. Right click on the files then click on Properties. In Properties window and change Build Action to Embedded Resource.
内嵌资源的名称为"[DefaultNamespace].[Folder].filename"。我保存了一个证书(cert.pfx)到"资源"文件夹,所以对我来说它是"myprojectname。Resources.cert.pfx"
这是添加到我的.csproj
:
<ItemGroup>
<None Remove="Resources'testcert.pfx" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources'testcert.pfx" />
</ItemGroup>