emmanuel Gidon Ответов: 3

getContentStream all возвращает null в консоли C#


Привет,
Я шел через некоторые испытания с помощью C# в консольном режиме для того, чтобы загрузить Сомме XML-файлов.

У меня есть XMLFile1.xml с build as resources и XMLFile2.xml с таким же содержанием и всегда копируйте.

string chemin1 = "XMLFile1.xml";
Uri uri1 = new Uri(chemin1, UriKind.RelativeOrAbsolute);
StreamResourceInfo info1 = Application.GetResourceStream(uri1);

и
string chemin2 = "XMLFile2.xml";
Uri uri2 = new Uri(chemin2, UriKind.RelativeOrAbsolute);
StreamResourceInfo info2 = Application.GetContentStream(uri2);


файл program.cs находится на том же уровне, что и xml-файлы. первое решение в порядке, info1 не является нулевым, но я не могу заставить вторую работу работать, info2 всегда равен нулю.
Я перепробовал много струн, таких как
chemin2 = "/Debug/XMLFile2.xml";
chemin2 = "/testC#/ConsoleApplication1/ConsoleApplication1/bin/Debug/XMLFile2.xml";
chemin2 = "file:///D:/testC#/ConsoleApplication1/ConsoleApplication1/bin/Debug/XMLFile2.xml";
chemin2 = "pack://siteoforigin:,,,/XMLFile2.xml";
chemin2 = "pack://application:,,,/XMLFile2.xml";
chemin2 = "pack://application:,,,/bin/Debug/XMLFile2.xml";
chemin2 = "/ConsoleApplication1;/XMLFile2.xml";


но я не могу заставить его работать, заранее спасибо за любую помощь, которую кто-нибудь может оказать, извините за мой французский.

------------------
1: очень глупый вопрос, то, что вы называете корнем проекта, находится там, где находится файл .csproj?
2: я попробовал с вашим решением, и я получаю исключение с недопустимым портом
3: я действительно хотел бы сделать версию getcontent работающей и понять ее
4: Мне кажется странным, что я должен использовать
chemin2 = "../../XMLFile2.xml"; 
doc = XElement.Load(chemin2) 
движение назад и не только XMLFile2.xml-есть ли способ это изменить ?

[no name]

"Если свободный ресурс не найден, возвращается значение null"., http://msdn.microsoft.com/en-us/library/system.windows.application.getcontentstream.aspx

Fredrik Bornander

Вы получаете "недопустимый порт", потому что вы не разрешили упаковка идентификатор URI.
Новый up an Приложение объект, и он зарегистрирует его для вас.

3 Ответов

Рейтинг:
2

Member 2313614

Ури, вероятно, задыхается от "#". Попробуйте кодировать путь.


Рейтинг:
0

Fredrik Bornander

Если ваш xml - файл находится в корне вашего проекта, он должен работать просто так;

var x = Application.GetResourceStream(new Uri("pack://application:,,,/XMLFile1.xml"));

До тех пор, пока xml - файл установлен в качестве ресурса.

/Фредрик


Рейтинг:
0

emmanuel Gidon

чего я не понимаю, так это того, что я думал, что когда кто-то устанавливает параметр сборки файла в content в visual studio, он добавляет его в пакет, что же я упускаю?