исключение ArgumentNullException, что streamreader


Эй там,
У меня есть программа, которая использует локальную БД sql express. Я хочу иметь возможность обновить эту базу данных, используя программу для запуска необходимых сценариев. Текстовый файл был добавлен в качестве встроенного ресурса в проект (VS2010), и файл содержит текст. Однако файл не открывается. Я получаю "ArgumentNullException was unhandled "" значение не может быть null. Parametername: stream " вот код...

Assembly assem;
StreamReader textReader;
assem = Assembly.GetExecutingAssembly();
//fails at this line below.
textReader = new StreamReader(assem.GetManifestResourceStream("projectName.sqlUpdates.txt"));

tReader.Peek() != -1)
  script = textReader.ReadToEnd();
2 2

2 ответа:

- это 'projectName' полная сборка и пространство имен, в котором находится файл sqlUpdates.txt живет? Выполняется ли приведенный выше пример кода в сборке' projectName ' или где-то еще?

Если sqlUpdates.txt файл живет в пространстве имен ниже сборки projectName, то вам нужно указать, что в вызове GetManifiestResourceStream, т. е.:

Stream resource = assem.GetManifestResourceStream("projectName.nameSpace.sqlUpdates.txt")

Это в основном означает, что

assem.GetManifestResourceStream("projectName.sqlUpdates.txt")

Возвращает null... что он и сделает, если не сможет найти этот ресурс. Проверьте, что он действительно находится в сборке, например, с отражателем или assem.GetManifestResourceNames().