Я думаю, что нашел проблему.
Когда я изменил код, чтобы сделать это:
using (var stream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write))
{
using (var package = Package.Open(stream))
{
// do something with package
}
}
Я получил довольно приличное сообщение об ошибке:
Невозможно открыть пакет, поскольку значение FileMode или FileAccess недопустимо для потока.
Я думаю, что это "настоящее" сообщение об ошибке, и что кто-то где-то просто смешал его с этим бессмысленным сообщением при локализации.
Затем я изменил код для этого:
// no FileAccess parameter
using (var package = Package.Open(file, FileMode.OpenOrCreate))
{
// do something with package
}
И он больше не падает, и, кажется, работает правильно.