Проблема чтения встроенного ресурса с ASP. NET Core 3.1 в консольном приложении - PullRequest
1 голос
/ 08 февраля 2020

Мне не удается прочитать встроенные ресурсы в ASP. NET Core 3.1. В частности, я следую примеру в следующих документах:

https://docs.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="Data\sessions.json" />
    <EmbeddedResource Include="Data\speakers.json" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\EFLib\EFLib.csproj" />
    <ProjectReference Include="..\RepositoryLib\RepositoryLib.csproj" />
    <ProjectReference Include="..\SeedDataLib\SeedDataLib.csproj" />
  </ItemGroup>

</Project>

У меня есть консольное приложение, и при запуске я получаю сообщение об ошибке ниже.

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Hello World!");

        var manifestEmbeddedProvider =
            new ManifestEmbeddedFileProvider(typeof(Program).Assembly); // ERROR HERE

{"Не удалось загрузить манифест встроенного файла" Microsoft.Extensions.FileProviders. Embedded.Manifest. xml 'для сборки' TestConsoleApp '. "}

Я в основном пытаюсь сделать то, что я использую, чтобы сделать в ASP. NET Core 2, который был этим, и это не так работает.

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

1 Ответ

1 голос
/ 03 апреля 2020

Я столкнулся с той же проблемой, которую вы описали. Убедитесь, что вы добавили следующую ссылку на пакет в .csproj, где объявлены встроенные ресурсы. Как только я добавил его в свой проект и перестроил решение, оно начало работать.

<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.0" />
</ItemGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...