2015-05-21 20 views
7

dla wszystkich.Błąd System.Xml.Xsl.CompiledQuery.Query.staticData podczas próby debugowania XSLT w Visual Studio

Utworzono prosty plik XSLT przy użyciu Visual Studio 2010, który działa dobrze na moim komputerze. Jednak kiedy mój kolega próbował uruchomić go na swoim PC z Visual Studio 2013 poinformowano ją, że nie można uruchomić plik i generowany jest komunikat:

próba metodą „System.Xml.Xsl.XslCompiledTransform.Load (System.Type) "aby uzyskać dostęp do pola" System.Xml.Xsl.CompiledQuery.Query.staticData "nie powiodło się.

Kiedy jednak zrobiłem prostą kopię tekstu w moim pliku i wkleić go do nowego pustego pliku XSLT na swoim komputerze (z VS 2013) i zapisać go pod inną nazwą to działa dobrze, chociaż jest całkowicie identyczny z moim oryginałem. To tak, jakby miał miejsce jakiś problem z kompatybilnością wsteczną. Czy ktoś doświadczył tego, a jeśli tak, czy znasz jakieś stałe poprawki, więc nie musimy ciągle kopiować i wklejać? Plik xslt jest uruchamiany z dysku lokalnego.

Wielkie dzięki z góry.

+0

chyba szczęścia na zewnątrz i ktoś czyta ustaliła dokładnie ten problem, zrobisz lepiej zawierają najmniejszą możliwą próbkę, która ilustruje ten problem. Wtedy każdy może zastosować swoje umiejętności analityczne do twojego problemu. Powodzenia! – shellter

Odpowiedz

4

Zmiana kodowania z UTF-8 na ANSI (lub inne kodowanie) i z powrotem na UTF-8 naprawiono je dla mnie. Nie różni się niczym od tworzenia nowego pliku, ale nieco prostszego.

+0

Otworzyłem pliki w Notepad ++ i zmieniono z "Kodowanie w UTF-8-BOM" na "Kodowanie w UTF-8".Wygląda na to, że posiadanie BOM-a (Byte Order Mark) dezorientowało Studio 2013 i może to być XSLT –

+0

@JohnDyer, albo może to być po prostu fakt, że zmieniłeś kodowanie. –

+1

@JonList Jak widać w mojej odpowiedzi, wydaje się, że jest to problem z funkcją zabezpieczeń plików pobieranych z internetu. Kodowanie jest prawdopodobnie czerwonym śledziem. Prawdopodobnie po prostu modyfikowanie pliku i ponowne zapisywanie usunęło flagę "pobrane z Internetu". – JLRishe

1

Kodowanie nie działa dla mnie, ale mam obejście. Otrzymuję ten błąd w VS 2015, więc ten błąd był przez jakiś czas.

Nie rób to w ten sposób: Aby przetestować przemienia zazwyczaj mam XSLT otwarte z kursorem w nim, a następnie z górnego menu, kliknij XML-> Start XSLT debugging-> przejdź do pliku xml

Zrób to w ten sposób: wykonaj to przeciwieństwo powyższego, to znaczy otwórz plik XML (nie xslt), a następnie kliknij xml-> start debugowanie xslt-> przejdź do pliku XSLT.

Nie wiem, dlaczego to działa, ale tak jest.

15

Żadna z dwóch odpowiedzi tutaj pracował dla mnie, ale jeden z workarounds w raporcie bug MS Połącz pracował dla mnie na wielu okazjach:

  1. Otwórz właściwości pliku XSLT w Eksploratorze Windows
  2. Na karcie Ogólne poszukaj przycisku Odblokuj.
  3. Kliknij go, a następnie kliknij przycisk OK

Wydaje się, że istnieje jakiś rodzaj zabezpieczenia w grze tutaj, który wykrywa, że ​​plik pochodzi z innego komputera i to zanieczyszczanie się coś w debugger XSLT.

+0

to też działa dla mnie. – Rashmin

+0

To zdecydowanie działa! Miło, że tu umiesz – goldenlimit

0

Problem polegał na tym, że plik xslt znajdował się na dysku sieciowym. Przeniesienie pliku na dysk lokalny na moim komputerze rozwiązało problem.

wpadł na pomysł z Microsoft's feedback forum

Powiązane problemy