MSB4018 Задача "GenerateEmbeddedResourcesManifest" неожиданно завершилась неудачей

Я пытаюсь добавить локализацию в мое веб-приложение (используя страницы Aspnetcore 2.1.1 и Razor). Однако, когда я добавляю более одного файла.resx, он не может быть скомпилирован со следующей ошибкой.

Error   MSB4018 The "GenerateEmbeddedResourcesManifest" task failed unexpectedly.
System.InvalidOperationException: An item with the name '' already exists.
   at Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Internal.Entry.AddChild(Entry child)
   at Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Manifest.AddElement(String originalPath, String assemblyResourceName)
   at Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.GenerateEmbeddedResourcesManifest.BuildManifest(EmbeddedItem[] processedItems)
   at Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.GenerateEmbeddedResourcesManifest.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() Service C:\Users\mishaukat\.nuget\packages\microsoft.extensions.fileproviders.embedded\2.1.1\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.targets   65

В моем файле.csproj установлено следующее свойство.

<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>

С такой же настройкой локализация работала в AspNetCore 2.0.3.

Проблема заключается в содержимом сгенерированного файла манифеста "Microsoft.Extensions.FileProviders.Embedded.Manifest.xml". Генератор файлов манифеста добавляет эту строку для одного файла *.resx.

<File Name=""><ResourcePath></ResourcePath></File> 

Когда генератор находит другой файл *.resx, он пытается добавить эту же строку в xml манифеста и не может сказать "Элемент с именем" уже существует ".

0 ответов

Кажется , я второй человек, который получил эту ошибку:) По этой ссылке я сделал некоторые изменения в файле csproj, добавив ExcludeFromManifest Отметить каждую ссылку на файл resx, что исправило мой случай.

<EmbeddedResource Include="Resources/EntityListResources.resx">
  <ExcludeFromManifest>true</ExcludeFromManifest>
</EmbeddedResource>
Другие вопросы по тегам