3 votes

Problème de lecture d'une ressource incorporée avec ASP.NET Core 3.1 dans une application console

Je ne parviens pas à lire les ressources intégrées dans ASP.NET Core 3.1. Plus précisément, je suis l'exemple donné dans la documentation ici :

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

J'ai mis à jour mon fichier csproj de la manière suivante en ajoutant l'élément suivant <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>

J'ai une application console comme suit et j'obtiens l'erreur ci-dessous lorsque je l'exécute.

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

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

{"Impossible de charger le manifeste du fichier intégré 'Microsoft.Extensions.FileProviders.Embedded.Manifest.xml' pour l'assemblage 'TestConsoleApp'."}

J'essaie essentiellement de faire ce que j'avais l'habitude de faire dans ASP.NET Core 2, c'est-à-dire ceci, mais cela ne fonctionne pas.

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

3voto

AndreyCh Points 241

J'ai rencontré le même problème que vous avez décrit. Assurez-vous que vous avez ajouté la référence du paquet suivant au fichier .csproj où les ressources embarquées sont déclarées. Une fois que je l'ai ajouté à mon projet et que j'ai reconstruit la solution, cela a commencé à fonctionner.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X