如何从 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();

结果:

Stream stream = assembly.GetManifestResourceStream(string.Format("PCL.PCLResrouce.txt"));

结果 null

使用 dotPeek,我可以在 DLL 中看到 PCLResrouce.txt。

作为消费者,我如何才能访问嵌入式资源文本文件?

我使用了以下资源:

我意识到我拼错了 resource :/ 但这不是问题所在。

我的问题是我没有得到 PCL 程序集。

解决方案:

var assembly = Assembly.GetAssembly(typeof(StaticPCLClass));

当我需要资源时,我不一定会使用这个 class,但这让我可以获得程序集。 现在我可以打电话了:

Stream stream = assembly.GetManifestResourceStream(string.Format("PCL.PCLResrouce.txt"));

使用了来自 here 的帮助。