【发布时间】:2021-10-10 12:23:27
【问题描述】:
我正在尝试将流设置为等于我的 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所在项目的文件结构:
【问题讨论】:
-
调用 GetManifestResourceNames 以查明资源是否存在以及使用的名称。
-
将文件设置为复制到输出目录然后
File.ReadAllText(Path.Combine("Assets", "loyalty-template.html"));不是更容易吗? -
应该是{ProjectDefaultNamespace}.Assets.{filename},即命名空间+点分隔路径
标签: c# asp.net-core embedded-resource