如何从 PCL Targeting ASP.NET CORE & .NET Framework 4.6 访问嵌入式资源
How to access Embedded Resource from PCL Targeting ASP.NET CORE & .NET Framework 4.6
我有一个 PCL 目标 ASP.NET CORE & .NET Framework 4.6。
在 PCL 的根目录中,我添加了 PCLResource.txt 并将其标记为 Build Action > Embedded Resource。
发布到 NuGet,从 NuGet 安装到我的消费者 WinForm 应用程序 (4.6.2)
调用 PCL.TestMethod()
有效。然而,
string[] asm = Assembly.GetExecutingAssembly().GetManifestResourceNames();
和
var assembly = GetType().GetTypeInfo().Assembly;
string[] resources = assembly.GetManifestResourceNames();
结果:
- PCLConsumerApp.Form1.resources
- PCLConsumerApp.Properties.Resources.resources
和
Stream stream = assembly.GetManifestResourceStream(string.Format("PCL.PCLResrouce.txt"));
结果 null
使用 dotPeek,我可以在 DLL 中看到 PCLResrouce.txt。
作为消费者,我如何才能访问嵌入式资源文本文件?
我使用了以下资源:
- Tip: Accessing Binary Resources in Portable Class Library
- How to read a resource file within a Portable Class Library?
我意识到我拼错了 resource :/ 但这不是问题所在。
我的问题是我没有得到 PCL 程序集。
解决方案:
var assembly = Assembly.GetAssembly(typeof(StaticPCLClass));
当我需要资源时,我不一定会使用这个 class,但这让我可以获得程序集。
现在我可以打电话了:
Stream stream = assembly.GetManifestResourceStream(string.Format("PCL.PCLResrouce.txt"));
使用了来自 here 的帮助。
我有一个 PCL 目标 ASP.NET CORE & .NET Framework 4.6。
在 PCL 的根目录中,我添加了 PCLResource.txt 并将其标记为 Build Action > Embedded Resource。
发布到 NuGet,从 NuGet 安装到我的消费者 WinForm 应用程序 (4.6.2)
调用 PCL.TestMethod()
有效。然而,
string[] asm = Assembly.GetExecutingAssembly().GetManifestResourceNames();
和
var assembly = GetType().GetTypeInfo().Assembly;
string[] resources = assembly.GetManifestResourceNames();
结果:
- PCLConsumerApp.Form1.resources
- PCLConsumerApp.Properties.Resources.resources
和
Stream stream = assembly.GetManifestResourceStream(string.Format("PCL.PCLResrouce.txt"));
结果 null
使用 dotPeek,我可以在 DLL 中看到 PCLResrouce.txt。
作为消费者,我如何才能访问嵌入式资源文本文件?
我使用了以下资源:
- Tip: Accessing Binary Resources in Portable Class Library
- How to read a resource file within a Portable Class Library?
我意识到我拼错了 resource :/ 但这不是问题所在。
我的问题是我没有得到 PCL 程序集。
解决方案:
var assembly = Assembly.GetAssembly(typeof(StaticPCLClass));
当我需要资源时,我不一定会使用这个 class,但这让我可以获得程序集。 现在我可以打电话了:
Stream stream = assembly.GetManifestResourceStream(string.Format("PCL.PCLResrouce.txt"));
使用了来自 here 的帮助。