Как открыть упакованный файл с помощью WinRT

Я пытаюсь понять, как перенести некоторый .Net-код, который анализирует xml файл в WinRT. Пока что с помощью данный System.Uri не может быть преобразован в Windows.Foundation.Uri , у меня есть следующий код. Тем не менее, я застреваю сразу после создания Uri:

    static readonly Uri ResourcesBase = new Uri(@"ms-resource://MyAssembly/"); 
    public override async void Load()
    {
        Uri uri = new Uri(ResourcesBase, filePath); // filePath = "Data//world.xml";
        XmlLoadSettings settings = new XmlLoadSettings() { ValidateOnParse = false };

        XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(uri, settings);

        foreach (IXmlNode xmlNode in xmlDoc.ChildNodes)
        {
            ProcessNode(xmlNode);
        }
    }

Я получаю необработанное исключение, когда пытаюсь вызвать XmlDocument.LoadFromUriAsyn (uri):

ArgumentException не было обработано пользовательским кодом - Значение не соответствует ожидаемому диапазон.

Кто-нибудь еще считает, что с WinRT все в 10 раз сложнее?

РЕДАКТИРОВАТЬ:

Я перепробовал все следующие строки и получил ту же ошибку:

  Uri uri = new Uri("ms-resource://MyAssembly//" + filePath);
  Uri uri = new Uri("ms-resource://MyAssembly/" + filePath);
  Uri uri = new Uri("d:\\projects\\crystal\\" + filePath); // A valid absolute path

Project Set Up:

Project

  • Свойства
  • Ссылки
  • Активы
  • Данные
    • world.xml
  • Исходный код ...

В коде:

  filePath = "Data\\world.xml";

Я также попытался поместить файл xml в папку assset \ data и только активы. Кажется, ничего не меняет.

Еще одна вещь: у меня для действия сборки xml установлено значение «Content».Это правильно? Единственное, что я мог вообразить, это «Встроенный ресурс», но я в этом сомневаюсь.

Полная информация об исключении:

System.ArgumentException не было обработано кодом пользователя

HResult = -2147024809

Сообщение = Значение не попадает в ожидаемый диапазон.

Source = Windows.Data.Xml.Dom

StackTrace:

в Windows.Data.Xml.Dom.XmlDocument.LoadFromUriAsync (Uri uri, XmlLoadSettings loadSettings)

в Crystal.IO.File.XmlFileSerializer .d__1.MoveNext () в d: \ Projects \ Crystal \ library \ IO \ File \ XmlFileSerializer.cs: строка 32

InnerException:

Загрузите наименьший возможный пример для воспроизведения проблемы: test_xml.zip

11
задан Community 23 May 2017 в 11:58
поделиться