Значение не может быть нулевым. Имя параметра: ошибка потока при чтении содержимого внедренного файла
Я делаю приложение в C#.
Я получаю ошибку:
Значение не может быть нулевым. Имя параметра: поток при чтении содержимого x встроенного файла
в коде
Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);
Как решить эту ошибку?
2 ответа
Я обнаружил, что однажды я столкнулся с этой проблемой после добавления текстового файла или файла шаблона для чтения тела письма, а затем чтения пути к этому файлу шаблона с использованием следующего синтаксиса:
Assembly asm = Assembly.GetExecutingAssembly();
string assemblyName = asm.GetName().Name;
string emailTemplateName = xyz.tt;
emailTemplateName = assemblyName + "." + emailTemplateName;
using (StreamReader reader = new StreamReader(asm.GetManifestResourceStream(emailTemplateName)))
{
body = reader.ReadToEnd();
}
Файл по умолчанию добавляется в библиотеку проекта со свойством "Build Action"= Content. Я изменил значение с "Контент" на "Встроенный ресурс", и все работало хорошо.
Префикс встроенных ресурсов - это не имя сборки, а пространство имен по умолчанию, указанное в проекте. Однако ваша лучшая тактика - смотреть на:
string[] names = Asm.GetManifestResourceNames();
foreach(var name in names) Debug.WriteLine(name);
и посмотрите, какие имена на самом деле, и соответственно измените префикс. Ты получишь null
если это не полное совпадение.