Приложение.GetContentStream возвращает null для Uri содержимого

#c# #.net-4.0 #uri

#c# #.net-4.0 #uri

Вопрос:

У меня есть файл «sample.xml «в моем проекте, заданном как содержимое.

Я запускаю этот код:

   Uri uri = new Uri("/sample.xml", UriKind.Relative);
  StreamResourceInfo contentStream = Application.GetContentStream(uri);
  

Почему он возвращает null ContentStream?

Ответ №1:

Вы должны установить файл Build Action в качестве содержимого, а Copy To Output Directory в Copy Always или Copy if newer .

введите описание изображения здесь

Комментарии:

1. То, что вы говорите, требуется, если файл должен храниться вне сборки и к нему следует обращаться с помощью обычных методов ввода-вывода. Вопрос касается ресурсов, встроенных в сборку.

2. Вы смешиваете файлы ресурсов с файлами содержимого. Файлы содержимого — это автономные файлы, которые имеют явную связь с приложением, а файлы ресурсов встроены в сборку. Вы не можете получить файл ресурсов с помощью «Application. GetContentStream». Вы должны использовать «Приложение. GetResourceStream» для встроенных файлов ресурсов.

Ответ №2:

Вероятно, это означает, что файл не найден. Правильный ли путь?.

Возвращаемое значение

Тип: System.Windows.Ресурсы.StreamResourceInfo

StreamResourceInfo, который содержит файл данных содержимого, расположенный по указанному Uri. Если свободный ресурс не найден, возвращается null.

Комментарии:

1. Путь указан правильно. Но я перепробовал все варианты и все тот же.

2. @husayt это может показаться очевидным, но вы уверены, что хотите загрузить .xml файл вместо .xaml ?

3. @husayt взгляните на этот пост: social.msdn.microsoft.com/forums/en-us/wpf/thread /… (последний комментарий). Измените расширение xml на что-нибудь другое и повторите попытку.