Оказывается, проблема заключалась в использовании управляемых ресурсов - Resx Builder создает Растровые объекты из файлов изображений и сериализует эти объекты, он не сохраняет исходный файловый поток . Однако встроенные ресурсы могут хранить плоские двоичные файлы.
Я сейчас встраиваю все файлы из папки с изображениями, используя следующие записи .csproj
:
<EmbeddedResource Include="Images\*.jpg" />
<EmbeddedResource Include="Images\*.png" />
<EmbeddedResource Include="Images\*.gif" />
Visual Studio показывает их как обычные файлы в проекте с Build Action
, установленным на Embedded Resource
.
Затем из своего кода я загружаю исходные файловые потоки с помощью:
var assembly = GetType().Assembly;
var regex = new Regex("\\.(png|jpg|gif))$");
foreach (var bitmap in assembly.GetManifestResourceNames())
{
if(!regex.IsMatch(bitmap)
continue;
var stream = assembly.GetManifestResourceStream(bitmap);
//handle the stream here
}