Я использую 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();
}
Ниже приведены мои результаты отладки.
namespace1 возвращает правильное пространство имен, используемое для класса из проекта, т.е. для класса, из которого я вызываю streamReader, файл ресурсов.
name1 возвращает имя файла ресурса с расширением.то есть.myquery.sql
- имя_ресурса, которое в основном объединяет путь и имя файла, с моей точки зрения, возвращает правильный адрес ресурса.т.е. myNamespace.myquery.sql