К сожалению, я верю, что вы правы. Нет хорошего способа заставить библиотеки System.IO.Packaging открывать любой файл в стандартном формате zip, который не содержит этот файл [content_types] .xml.
Я работал над этой проблемой несколько месяцев назад, и именно это я пытался реализовать, внедряя этот файл до того, как мы решили сначала сгенерировать все наши файлы из .NET:
формат файла zip следующий
(--- файл 1 ---) (--- файл 2 ---) ... (---file x ---) (оглавление)
Без сторонней библиотеки вы сможете открыть zip-файл в виде двоичного файла, перепрыгнуть до конца и прочитать это оглавление,добавьте файл [content_types] .xml в конце с информацией о расширениях types / default, настройте записи в оглавлении, добавьте его в конец файла и перейдите.Проблема, с которой я столкнулся, пытаясь реализовать это, состоит в том, что в файле есть различные контрольные суммы, чтобы убедиться, что он не был поврежден, я не получил их все к тому времени, когда мне нужно было изменить указания на этом.
Я уверен, что вам нужна дополнительная информация, но, если вы решите внедрить собственное решение, надеюсь, это поможет.