Почему GetManifestResourceStream возвращает ноль (с ядром do tnet) - PullRequest
4 голосов
/ 15 марта 2020

Использование do tnet core:. NET Core SDK Версия: 3.1.102

Почему следующий код возвращает null
?

typeof(MyClassName).GetTypeInfo().Assembly.GetManifestResourceStream("MyFile.cs")

Я проверил файл существует в решении и имеет действие сборки в свойствах ' Embedded Resource '

Ответы [ 3 ]

1 голос
/ 15 марта 2020

Вы можете проверить, какие имена ресурсов доступны:

string[] names = this.GetType().Assembly.GetManifestResourceNames();

И затем, если Ресурс существует, напишите правильное имя ресурса

1 голос
/ 15 марта 2020

Загрузите сборку , в которую встроен ресурс , итерируйте по GetManifestResourceNames, чтобы найти имя полностью квалифицированного ресурса, которое затем используется для GetManifestResourceStream .

Вы можете попробовать

var assembly = Assembly.LoadFrom(Assembly.GetAssembly(typeof(MainWindow)).Location);
string[] names = assembly.GetManifestResourceNames();
var stream = assembly.GetManifestResourceStream(names[0]);
1 голос
/ 15 марта 2020

Имя файла должно включать «root пространство имен» сборки, например, «My.Namespace.MyFile.cs». Обычно это имя сборки, но его можно изменить в файле .csproj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...