Debugowanie szablonu tekst T4
Punkty przerwania można ustawić w szablonach tekst.Debugowanie szablonu projektowania, wybierz polecenie Debugowania szablon T4 pliku szablonu tekst w oknie Solution Explorer, w menu skrótów.Aby debugować szablonu run-time, po prostu debugowania aplikacji, do której należy.
Aby debugować szablonu, należy zrozumieć kroki procesu transformacji szablonu.Różnego rodzaju błędy mogą wystąpić w każdym kroku.Dostępne są następujące kroki.
Krok |
Szablon projektowania: kiedy to się dzieje |
Szablon Run-time: kiedy to się dzieje |
---|---|---|
Kod jest generowany na podstawie szablonu tekstu. Błędy w dyrektywach, lub niezgodne lub dezorganizacji <#…#> tagi. |
Podczas zapisywania szablonu lub wywołać Transformacja tekstu. |
Podczas zapisywania szablonu lub wywołać Transformacja tekstu. |
Wygenerowany kod jest skompilowany. Błędy kompilacji w kodzie szablonu. |
Natychmiast po poprzednim kroku. |
Wraz z kod aplikacji. |
Kod działa. Błędy czasu wykonania w kodzie szablonu. |
Natychmiast po poprzednim kroku. |
Kiedy aplikacja jest uruchamiana i wywołuje kod szablonu. |
W większości przypadków numery wierszy w kodzie szablonu są podane w raporcie o błędzie.Gdy raport o błędzie odwołuje się do nazwy pliku tymczasowego, częsta przyczyna jest niedopasowane nawias w kodzie szablonu tekstu.
Można ustawić punkty przerwania w szablonach tekst i debugowania w zwykły sposób.
Typowe błędy i poprawki
Poniższa tabela zawiera listę najbardziej typowych błędów i ich poprawki.
Komunikat o błędzie |
Opis |
Rozwiązanie |
---|---|---|
Nie można załadować klasy podstawowej '{0}' z dziedziczy z klasy, które transformacji. |
Występuje, jeśli nie można odnaleźć klasy podstawowej określonej w inherits parametr w dyrektywie szablonu.Wiadomość zawiera numer wiersza szablonu niniejszej dyrektywy. |
Upewnij się określonej klasy istnieje i czy zestaw, który istnieje w jest określona w dyrektywie zestawu. |
Nie można rozpoznać tekst dla file:{0} |
Występuje, gdy nie można odnaleźć szablonu dołączone.Komunikat zawiera nazwę pliku dołączanego żądana. |
Upewnij się, że ścieżka pliku jest oryginalnej ścieżki szablonów, lub że plik jest w lokalizacji, która jest zarejestrowana z hosta lub jest pełna ścieżka do pliku. |
Błędy były generowane podczas inicjowania obiektu transformacji.Transformacja nie będzie działać. |
Występuje, gdy "Initialize()" Klasa transformacji nie powiodło się lub zwróciła wartość false. |
Kod w funkcji Initialize() pochodzi od klasy podstawowej transformacji, określonej w <#@template#> dyrektywy i z procesorów w dyrektywie.Błąd, który spowodował initialize prawdopodobnie nie znajduje się na liście błędów.Należy zbadać, dlaczego nie powiodło się.Można szukać w rzeczywistych wygenerowany kod Initialize() wykonując procedury debugowania szablon. |
Zestawu '{0}' dla procesora dyrektywa '{1}' nie przyznano FullTrust zestaw uprawnień.Tylko zaufanych zestawów mogą zapewnić procesorów w dyrektywie.Ta dyrektywa procesor nie zostanie załadowana. |
Występuje, gdy system nie udziela FullTrust uprawnienia do zestawu zawierającego procesor w dyrektywie.Komunikat zawiera nazwę zestawu i nazwa procesora w dyrektywie. |
Pamiętaj, że używasz tylko zaufanych zestawów na komputerze lokalnym. |
Ścieżka '{0}' musi być lokalnego na tym komputerze lub częścią Twojej strefy zaufanej. |
Występuje, gdy dyrektywy lub dyrektywy zestawu odwołuje się plik, który jest nie na komputerze lokalnym lub na strefy zaufanej w sieci. |
Upewnij się, że katalog, gdzie znajdują się dyrektywy lub dyrektyw zestawu jest w strefie zaufanych.Katalog sieciowy można dodać do strefy zaufanych programu Internet Explorer. |
Wiele błędów składni, takich jak "Nieprawidłowy token" catch"" lub "przestrzeni nazw bezpośrednio nie mogą zawierać członków" |
Zbyt wiele nawiasów klamrowych zamknięcia w kodzie szablonu.Kompilator jest to mylące z kodem generacji standardowych. |
Sprawdź numer zamykające nawiasy klamrowe i nawiasy wewnątrz ograniczników kod. |
Pętle warunkowe nie skompilowany lub wykonywane poprawnie.Na przykład:
Ten kod zawsze wyświetla wartość i.Tylko "Liczba to:" jest warunkowe. |
W języku C# należy zawsze używać nawiasów klamrowych otoczyć bloków tekstu, które są osadzone w sprawozdaniu z kontroli. |
Dodaj nawiasy klamrowe:
|
"Zbyt skomplikowane wyrażenie" podczas przetwarzania szablonu projektowania lub kompilacji szablonu (wstępnie) runtime. Visual Studioprzestaje działać podczas próby sprawdź kod generowany przez szablon runtime. |
Blok tekstu jest za długa.T4 konwertuje łączenie wyrażeniem, jeden ciąg literału dla każdego wiersza szablonu bloków tekstu.Bloki bardzo długi tekst może overstep limity rozmiaru kompilatora. |
Aby rozdzielić bloku długiego tekstu z bloku wyrażenie, takie jak: <#= "" #> |
Opisy ostrzeżenie i poprawki
Poniższa lista zawiera najczęściej ostrzeżenia z poprawki, jeśli są dostępne.
Komunikat ostrzegawczy |
Opis |
Rozwiązanie |
---|---|---|
Ładowanie pliku include '{0}' zwrócił zerowy lub pusty ciąg. |
Występuje, jeśli plik szablonu dołączony tekst jest puste.Komunikat zawiera nazwę pliku w pliku. |
Usuń dyrektywy include lub upewnij się, że plik ma pewne treści. |
Kompilowanie transformacji: |
Dołącza ten ciąg, aby wszystkie błędy lub ostrzeżenia, pochodzących z kompilatora, gdy kompiluje transformacja.Ciąg ten oznacza, że kompilator wygenerował błąd lub ostrzeżenie. |
Jeśli masz problem ze znalezieniem biblioteki DLL, należy podać pełną ścieżkę lub w pełni kwalifikowana nazwa silne, jeśli znajduje się w pamięci podręcznej GAC. |
Parametr "{0}" już istnieje w niniejszej dyrektywie.Zduplikowany parametr zostanie zignorowany. |
Występuje, gdy parametr jest określony więcej niż jeden raz w dyrektywie.Komunikat zawiera nazwę parametru i numer wiersza dyrektywy. |
Usunąć specyfikację zduplikowany parametr. |
Wystąpił błąd podczas ładowania pliku include '{0}'.Dyrektywy include zostanie zignorowany. |
Występuje, gdy nie można odnaleźć pliku, określonego w include dyrektywy.Komunikat zawiera nazwę pliku i numer wiersza dyrektywy. |
Upewnij się, że plik ten istnieje w tym samym katalogu co oryginalny plik szablonu tekstu lub w jednym z katalogów include, które są zarejestrowane z hosta. |
Określono nieprawidłowy klasy podstawowej klasy transformacji.Klasa podstawowa musi pochodzić od Microsoft.VisualStudio.TextTemplating.TextTransformation. |
Występuje, gdy inherits parametr w dyrektywie szablonu określa klasę, która dziedziczy z TextTransformation.Wiadomość zawiera numer wiersza szablonu niniejszej dyrektywy. |
Określ klasę, która wynika z TextTransformation. |
Nieprawidłowy kultury została określona w niniejszej dyrektywy "szablonu".Kultura musi być w formacie "xx-XX".Niezmienna kultura będzie używany. |
Występuje, gdy parametr kultury w dyrektywie w szablonie jest określona niepoprawnie.Wiadomość zawiera numer wiersza szablonu niniejszej dyrektywy. |
Zmień parametr kultury na prawidłowe kultury w formacie "xx-XX". |
Debugowania Nieprawidłowa wartość '{0}' został określony w dyrektywie szablonu.Wartość debugowania musi być "true" lub "fałsz".Używany będzie domyślny "false". |
Występuje, gdy debug w dyrektywie szablon został podany nieprawidłowo.Wiadomość zawiera numer wiersza szablonu niniejszej dyrektywy. |
Ustaw parametr debugowania na "true" lub "fałsz". |
Nieprawidłowa wartość HostSpecific {0} została określona w dyrektywie szablon.Wartość HostSpecific musi być "true" lub "fałsz".Używany będzie domyślny "false". |
Występuje, gdy parametr specyficzne dla hosta w template niepoprawnie określono dyrektywą.Wiadomość zawiera numer wiersza szablonu niniejszej dyrektywy. |
Ustaw parametr specyficzne dla komputera na "true" lub "fałsz". |
Nieprawidłowy język '{0}' został określony w dyrektywie "szablonu".Język musi być albo "C#" lub "VB".Wartość domyślna "C#" będzie używany. |
Występuje, gdy nieobsługiwany język jest określona w template dyrektywy.Tylko "C#" lub "VB" są dozwolone (z uwzględnieniem wielkości liter).Wiadomość zawiera numer wiersza szablonu niniejszej dyrektywy. |
Zestaw language parametr w dyrektywie szablonu "C#" lub "VB". |
Znaleziono kilka dyrektyw danych wyjściowych w szablonie.Wszystkie oprócz pierwszego zostaną zignorowane. |
Występuje, gdy wiele output dyrektyw są określone w pliku szablonu.Wiadomość zawiera numer wiersza dyrektywy zduplikowane dane wyjściowe. |
Usuń duplikat output dyrektyw. |
Znaleziono kilka dyrektyw szablonu w szablonie.Wszystkie oprócz pierwszego zostaną zignorowane.Wiele parametrów szablonu dyrektywy powinny zostać określone w ramach dyrektywy jeden szablon. |
Występuje, jeśli określono wiele template dyrektyw w pliku szablonu tekstu (w tym pliki dołączone).Wiadomość zawiera numer wiersza dyrektywy duplikat szablonu. |
Agregowanie różnych template dyrektyw w jeden template dyrektywy. |
Procesor nie został określony dla dyrektywy o nazwie "{0}".Dyrektywy będą ignorowane. |
Występuje, jeśli określisz custom dyrektywy, ale nie zapewniają processor atrybut.Komunikat zawiera nazwę niniejszej dyrektywy i numer wiersza. |
Zapewnić processor atrybut o nazwie directive procesora dla niniejszej dyrektywy. |
Nie można odnaleźć procesora, o nazwie "{0}" dla dyrektywy o nazwie "{1}".Dyrektywy będą ignorowane. |
Występuje, gdy system nie może znaleźć directive procesora określona w custom dyrektywy.Wiadomość zawiera dyrektywy nazwa, nazwa procesora i numer wiersza dyrektywy. |
Zestaw processor atrybut w niniejszej dyrektywie do nazwy w dyrektywie procesor. |
Nie można odnaleźć wymaganego parametru '{0}' dyrektywy "{1}".Dyrektywy będą ignorowane. |
Występuje, gdy system nie zapewnia wymagany parametr w dyrektywie.Komunikat zawiera nazwę parametru brakuje, dyrektywa nazwa i numer wiersza. |
Podaj brakujący parametr. |
Procesor o nazwie '{0}' nie obsługuje dyrektywy o nazwie "{1}".Dyrektywy będą ignorowane. |
Występuje, gdy dyrektywa procesor nie obsługuje dyrektywy.Wiadomość zawiera nazwy i linii numer naruszającym przepisy dyrektywy, wraz z nazwą procesora w dyrektywie. |
Popraw nazwę niniejszej dyrektywy. |
Dyrektywy dołączania pliku '{0}' powoduje nieskończoną pętlę. |
Wyświetlane, jeśli cykliczne zawiera dyrektywy określono (na przykład plik A zawiera plik B, który zawiera plik, A). |
Nie określono cykliczne dyrektyw dołączania. |
Uruchamianie transformacji: |
Dołącza ten ciąg, aby wszystkie błędy lub ostrzeżenia, które są generowane po uruchomieniu tego przekształcenia. |
Nie dotyczy. |
Początek lub koniec znaleziono nieoczekiwany w bloku.Upewnij się, że wpisany niepoprawnie znacznika początku lub końca, i że nie masz żadnych zagnieżdżone bloki w szablonie. |
Wyświetlane, gdy nieoczekiwane < # lub #>.Oznacza to jeśli masz < # > po inny znacznik otwarte, które nie zostały zamknięte, albo masz # gdy niezamknięty tag otwarte przed nim nie istnieje.Wiadomość zawiera numer wiersza niedopasowane tag. |
Usuń niezgodne tag początek lub koniec lub użyć znaku ucieczki. |
Dyrektywy określono nieprawidłowy format.Dyrektywy będą ignorowane.Proszę określić dyrektywy w formacie < #@ nazwa [Nazwa parametru = "parametervalue"] * #> |
Wyświetlane przez parser, jeżeli nie określono dyrektywy w poprawnym formacie.Wiadomość zawiera numer wiersza nieprawidłowe dyrektywy. |
Sprawdź wszystkie dyrektywy są w formie < #@ nazwa [Nazwa parametru = "parametervalue"] * #>.Aby uzyskać więcej informacji, zobacz T4 Tekst szablonu dyrektyw. |
Nie można załadować zestawu '{0}' dla zarejestrowanych procesor dyrektywa '{1}' {2} |
Występuje, gdy nie można załadować procesora w dyrektywie przez hosta.Komunikat identyfikuje montażu, przewidziane w dyrektywie procesor i nazwa procesora w dyrektywie. |
Upewnij się dyrektywa procesor jest poprawnie zarejestrowany i że istnieje zestaw. |
Nie można odnaleźć typu "{0}" w zestawie "{1}" dla zarejestrowanych w dyrektywie procesor {2}. {3} |
Występuje, gdy nie można załadować typu procesora dyrektywa z jej zestawu.Komunikat zawiera nazwę typu, montażu i procesor w dyrektywie. |
Vshost wyszukuje informacje o dyrektywie procesora (nazwa zestawu i typu) w rejestrze.Pamiętaj, dyrektywa procesor jest poprawnie zarejestrowany i typ istnieje w zestawie. |
Wystąpił problem podczas ładowania zestawu {0}. |
Występuje, gdy problem podczas ładowania zestawu.Komunikat zawiera nazwę zespołu. |
Można określić zestawów ładowanych w < @# zestawu #> dyrektywy oraz w dyrektywie procesory.Komunikat o błędzie, który następuje ciąg ten dostarcza więcej danych na Dlaczego ładowanie zestawu nie powiodło się. |
Wystąpił problem, tworzenie i Inicjowanie procesor dyrektywy o nazwie "{1}".Typ procesora jest {0}.Dyrektywy będą ignorowane. |
Występuje, gdy system nie można utworzyć lub zainicjować procesor w dyrektywie.Komunikat zawiera nazwę i linii numer dyrektywy i typ procesora. |
Należy używać poprawnego procesor w dyrektywie, i że dyrektywa procesor ma publicznego konstruktora domyślnego.W przeciwnym wypadku opcje debugowania, aby dowiedzieć się, dlaczego nie jest metoda Initialize() procesora w dyrektywie.Aby uzyskać więcej informacji, zobacz Debugowanie szablonu tekst T4. |
Wystąpił wyjątek podczas przetwarzania dyrektywy o nazwie "{0}". |
Występuje, gdy procesor dyrektywy zgłasza wyjątek podczas przetwarzania dyrektywy. |
Upewnij się że parametry procesora w dyrektywie są poprawne. |
Host zgłosił wyjątek podczas próby rozwiązania odwołanie do zestawu '{0}'. |
Występuje, gdy host zgłasza wyjątek, gdy próbuje rozpoznać odwołania do zestawu.Wiadomość zawiera zestaw odwołać ciąg. |
Montaż odniesienia pochodzą z < @# zestawu #> dyrektywy i z procesorów w dyrektywie.Upewnij się, że parametr 'name' w parametrze zestawu jest poprawny. |
Próba określenia "{0}" wartość nieobsługiwana {1} dla dyrektywy (2) |
Występuje, przez RequiresProvidesDirectiveProcessor, (wszystkie dziedziczyć naszych wygenerowany procesorów w dyrektywie), gdy podana wymaga lub nieobsługiwany zawiera argument. |
Pamiętaj, że nazwy w name = 'value' w parach wymaga i zapewnia parametry są poprawne. |