Próbuję dowiedzieć się, jak przesłać niektóre kod .Net, który sparsował plik XML do WinRT. Do tej pory, z pomocą The given System.Uri cannot be converted into a Windows.Foundation.Uri, mam poniższy kod. Mimo to utknąć natychmiast po tym, jak utworzyć Uri:Jak otworzyć spakowany plik za pomocą WinRT
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);
}
}
dostać nieobsługiwany wyjątek podczas próby wywołania XmlDocument.LoadFromUriAsyn (URI):
ArgumentException był nieobsługiwany przez kod użytkownika - Wartość robi nie mieszczą się w oczekiwanym zakresie.
Czy ktoś jeszcze czuje, że wszystko jest 10 razy trudniejsze dzięki WinRT?
EDIT:
Próbowałem wszystkie następujące ciągi i uzyskać dokładnie ten sam błąd:
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
projekt konfigurowaniu:
projekt
- Właściwości
- Referencje
- Aktywa
- danych
- world.xml kod
- Źródło ...
w kodzie:
filePath = "Data\\world.xml";
Próbowałem również umieszczenie xml plik pod assset \ data i tylko zasoby. Nic nie robi różnicy.
Inną rzeczą, mam Build Action z xml ustawioną na "Content". Czy to jest poprawne? Jedyne, co mogłem sobie wyobrazić, to "Osadzone zasoby", ale wątpię w to.
Pełne dane Wyjątek:
System.ArgumentException był nieobsługiwany przez kod użytkownika
hresult = -2147024809
Message = wartość nie mieści się w oczekiwanym zakresie.
Źródło = Windows.Data.Xml.Dom
StackTrace:
w Windows.Data.Xml.Dom.XmlDocument.LoadFromUriAsync (URI URI XmlLoadSettings loadSettings)
w Crystal.IO .File.XmlFileSerializer.d__1.MoveNext() w d: \ Projects \ Crystal \ library \ IO \ File \ XmlFileSerializer.CS: linia 32
InnerException:
Pobierz najmniejsza możliwa do powtórzenia błędu przykład kwestię: test_xml.zip
Nie powinieneś mieć tylko jednego końcowego ukośnika? To znaczy. 'Uri uri = new Uri (" ms-resource: // MyAssembly/"+ filePath);'. –
Posiadanie tylko 1 końcowego ukośnika lub bezwzględnej ścieżki pliku (c: \ ...) nie ma żadnego innego efektu. –
Czy możesz pokazać nam, jak wygląda 'filePath'? – user7116