我在ASP.Net Core中有一个项目需要包含资源文件中的图像(以生成PDF)。
因此,我使用Visual Studio(Add> New Item> Resources File)创建一个名为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
但结果是一样的。
如果我在控制台应用程序上创建此代码,一切正常。
答案 0 :(得分:2)
我找到了另一种方法,可以解决我的问题。
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");
答案 1 :(得分:1)
如果您使用的是.net core 3.1 API,则可以-
在ConfigureServices方法(Startup.cs)中添加services.AddLocalization();
在项目中添加Resource文件,例如Resource.en-US.resx,在Name中添加TestKey,在Value列中添加Hello,以进行测试。
添加与Resource.cs相同名称的类文件
在控制器中,添加一个变量-
私有只读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] 答案 2 :(得分:0)
我使用的是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.
嵌入资源的名称是&#34; [DefaultNamespace]。[Folder] .filename&#34;。我将证书(cert.pfx)保存到&#34;资源&#34;文件夹对我来说它是&#34; MyProjectName.Resources.cert.pfx&#34;
这已添加到我的.csproj
:
<ItemGroup>
<None Remove="Resources\testcert.pfx" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\testcert.pfx" />
</ItemGroup>