在控制台应用中读取具有 ASP.NET 核心 3.1 的嵌入式资源时出现问题



我无法读取 ASP.NET Core 3.1中的嵌入式资源。具体来说,我在这里遵循文档中的示例:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/file-providers?view=aspnetcore-3.1

我已经将我的 csproj 文件更新为以下内容,添加了<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>

<ItemGroup>
<EmbeddedResource Include="Datasessions.json" />
<EmbeddedResource Include="Dataspeakers.json" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..EFLibEFLib.csproj" />
<ProjectReference Include="..RepositoryLibRepositoryLib.csproj" />
<ProjectReference Include="..SeedDataLibSeedDataLib.csproj" />
</ItemGroup>
</Project>

我有如下控制台应用程序,当我运行它时出现以下错误。

class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Hello World!");
var manifestEmbeddedProvider =
new ManifestEmbeddedFileProvider(typeof(Program).Assembly); // ERROR HERE

{"无法为程序集'TestConsoleApp'加载嵌入的文件清单'Microsoft.Extensions.FileProviders.Embedded.Manifest.xml'。

我基本上是在尝试做我过去在 Core 2 中 ASP.NET 做的事情,这是这个,它不起作用。

var assembly = Assembly.GetEntryAssembly();
string[] resources = assembly.GetManifestResourceNames(); // debugging purposes only to get list of embedded resources

我遇到了你描述的同样的问题。请确保已将以下包引用添加到声明嵌入资源的.csproj。一旦我将其添加到我的项目中并重新生成解决方案,它就开始工作。

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.0" />
</ItemGroup>

最新更新