Assembly.GetExecutingAssembly (). GetManifestResourceStream не загружает поток - PullRequest
0 голосов
/ 09 июля 2019

Я использую Stream Reader для чтения данных SQL.Несмотря на то, что resourceName является правильным, а свойство Build Action ресурса является Embedded Resource, оно по-прежнему выдает следующую ошибку в StreamReader: System.ArgumentNullException: значение не может быть нулевым.

        var namespace1 = typeof(Toolbox).Namespace;
        var name1 = name.Replace('\\', '.');
        string resourceName = $"{typeof(Toolbox).Namespace}.{name1}";
        //Innosys.Ap.GetCurrentTimeKey.sql
        using (Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)
        )
        {
            using (StreamReader streamReader = new StreamReader(manifestResourceStream))
                return streamReader.ReadToEnd();
        }

Ниже приведены мои результаты отладки.

  1. namespace1 возвращает правильное пространство имен, используемое для класса из проекта, т.е. для класса, из которого я вызываю streamReader, файл ресурсов.

  2. name1 возвращает имя файла ресурса с расширением.то есть.myquery.sql

  3. имя_ресурса, которое в основном объединяет путь и имя файла, с моей точки зрения, возвращает правильный адрес ресурса.т.е. myNamespace.myquery.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...