2015-07-10 44 views
6

To nie jest w żaden sposób związane z tą kwestiąDodając długi ciąg, podświetlanie składni przestaje działać

broken syntax highlight example

IDE używam jest Visual Studio Ostateczny 2013

Dla celów demonstracyjnych, długi ciąg jest zakodowany w formacie base64 44 517 znaków (zbyt duży, aby wkleić go w bloku kodu, więc mam go na pastebinie here)

Powód, dla którego umieszczam obraz bezpośrednio do klasy jest z lenistwa. Nie chcę dodawać wszystkich obrazów jako zasobów do każdego projektu, w którym chcę używać tej klasy, a ponieważ Resources ładuje obraz z wersji zakodowanej w base64, to funkcjonalnie nie jest inaczej, ale ma tę zaletę, że upuszcza klasę -in obiektu (osadzony, nie skompilowany jako dodatkowa biblioteka dll).

CodeSense nadal działa, ale jak można sobie wyobrazić brak podświetlania składni, sprawia, że ​​czuję się jak moje środowisko deweloperskie po prostu wypaczone w czasie ponad 20 lat.

Wszelkie sugestie, jak rozwiązać ten problem ORAZ nadal osadzać obrazy bezpośrednio w klasie. (tak, wiem, chcę mieć moje ciasto I jem - inaczej dlaczego ma się ciasto?)

+0

Czy "ten problem" w pierwszym zdaniu miał być linkiem do innego tematu? – BoltClock

+0

* 'Zasoby' wczytują obrazek z wersji zakodowanej w base64 * => Uważam, że jest przechowywany jako base64 w pliku XML resx, ale jest konwertowany do binarnego zasobu podczas kompilacji. Poza tym możesz użyć pliku resx znajdującego się w tym samym zestawie, który deklaruje twoją klasę. –

+0

@LucasTrzesniewski - posiadanie resxu do montażu oznaczałoby, że zawsze, gdy chciałem użyć tej klasy, musiałbym ręcznie dodawać zasoby do każdego projektu. Jest to wyeliminowane przez umieszczenie obiektu bezpośrednio w klasie. Zminimalizowanie chaosu dystrybucji poprzez utrzymywanie wszystkiego jak najbardziej niezależnego. (Np. przenośny pojedynczy plik wykonywalny lub jak niektórzy mówią "monolityczny" build) –

Odpowiedz

8

Ten problem prawdopodobnie został naprawiony w Visual Studio 2015. Nie mogę go tam odtworzyć przy użyciu kodu z pastebin. Byłem jednak w stanie odtworzyć go w VS2013, więc to nie tylko ty.

Jednym z obejść, które natychmiast przychodzi do głowy, jest podzielenie literału na kawałki, ponieważ podświetlanie działa dobrze, jeśli literały są wystarczająco krótkie. Nawet dwie porcje po 20 kilobajtów robią w moim przypadku sztuczkę. Nie jestem pewien, jaka jest magiczna liczba, ale prawdopodobnie nie warto próbować się tego dowiedzieć.

Zarysuj to - magiczna liczba jest, tak jak podejrzewałem, 32 768, znaleziona przez liberalne użycie kopiowania i wklejania. Limit ten jest w szczególności całkowitą długością pojedynczej linii kodu, w tym białej spacji i interpunkcji (cudzysłowy, parens itp.), Więc podczas fragmentowania literału ciągłego upewnij się, że każdy fragment znajduje się na osobnej linii. Łączenie ich w jedną instrukcję jest w porządku, o ile instrukcja jest podzielona na linie.

+0

spróbuję tego, ponieważ uważam, że masz rację. nie wiedziałbyś, jaki maksymalny rozmiar mogę włożyć do tego? –

+1

@Sanuel Jackson: Nie zamierzałem się tego dowiedzieć, ale natknąłem się na to z pewnym spokojem i odrobiną szaleństwa. Właśnie zaktualizowałem moją odpowiedź. – BoltClock

+0

Właśnie to przetestowałem i to działa. Proszę zaktualizować swoją odpowiedź, aby zauważyć, że limit zawiera '' '(cytaty) wokół ciągu znaków, więc technicznie, maksymalna długość łańcucha wynosi 32766 z otaczającymi cytatami –

0

próbowałeś zadeklarować zmienną statyczną i załadować ją z pliku TXT? i wstaw wartość bytu w pliku TXT. lub możesz podzielić ciąg w więcej niż zmiennej!

+0

jeśli to zrobię, mogę po prostu załadować sam obraz:) .... nie potrzebuję żadnych dodatkowych plików –

+0

@SanuelJackson Możesz umieścić wszystko w zasobach. – PetSerAl

+0

@PetSerAl ~ klucz jest następujący: "Nie chcę dodawać wszystkich zdjęć jako zasobów do każdego projektu, w którym chcę używać tej klasy wewnątrz". Innymi słowy, utrzymując go jako kompaktowy i niezależny oraz w pełni naturalny kod osadzony w dowolnym projekcie, chciałbym użyć klasy wewnątrz bez zewnętrznych zależności. [To rozwiązanie] (http://stackoverflow.com/a/31349096/3504007) rozwiązało problem i zatrzymuje wszystko. –

Powiązane problemy