首页 > 解决方案 > 无法访问 ASP.NET Core C# 项目中的嵌入式资源?

问题描述

我正在尝试在我的 ASP.NET Core 项目中设置一个等于嵌入资源的文本内容的流。但是,在调试时,流一直被设置为空,我认为这是因为它无法找到这个嵌入的资源。

我已通过转到“属性”>“构建操作”>“嵌入式资源”将文件设置为嵌入式资源。然后我还编辑了项目.csproj文件以包含一个项目组,该项目组引用要包含的文件:

<ItemGroup>
  <EmbeddedResource Include="Assets/loyalty-template.html">
    <LogicalName>Assets/Loyalty-template.html</LogicalName>
  </EmbeddedResource>
</ItemGroup>

我在哪里设置流:

string body;
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Assets/loyalty-template.html"))
   {
       TextReader tr = new StreamReader(stream);
       body = tr.ReadToEnd();
   }

我是否在 中正确引用了嵌入文件GetManifestResourceStream?以下是我所在项目的文件结构loyalty-template.html

在此处输入图像描述

标签: c#asp.net-coreembedded-resource

解决方案


使用以下路径:[程序集名称].[目录].[文件名]。

或者

仅使用带有文件名和扩展名的 GetManifestResourceNames:

string resourceName = assembly.GetManifestResourceNames()
.Single(str => str.EndsWith("loyalty-template.html")); 

推荐阅读