Ladění textové šablony T4
Můžete nastavit zarážky v textu šablony.Ladění textu návrhu šablony, uložte soubor šablony text a pak zvolte Ladění šablony T4 v místní nabídce souboru v Průzkumníku řešení.Ladění spuštění text šablony, jednoduše ladit aplikace, do které patří.
Ladění textu šablony, měli byste pochopit kroky procesu transformace šablony.Různé druhy chyby může dojít v každém kroku.Postup je následující.
Krok |
Šablona návrhu: když se stane |
Spuštění šablony: když se stane |
---|---|---|
Generování kódu ze šablony text. Chyby ve směrnicích, nebo neodpovídající nebo disordered <#…#> značky. |
Při uložení šablony nebo vyvolat transformace textu. |
Při uložení šablony nebo vyvolat transformace textu. |
Generovaný kód je zkompilován. Chyby kompilace v kódu šablony. |
Ihned po předchozím kroku. |
A kód vaší aplikace. |
Kód se spustí. Chyby v kódu šablony. |
Ihned po předchozím kroku. |
Pokud aplikace spustí a vyvolá kód šablony. |
Ve většině případů čísla řádků v kódu šablony jsou uvedeny v chybové zprávě.Pokud chybová zpráva odkazuje na dočasný název souboru, je obvyklá příčina neshodující závorky v kódu šablony text.
Můžete nastavit zarážky v textu šablony a ladění obvyklým způsobem.
Běžné chyby a opravy
Následující tabulka uvádí většinu běžných chyb a jejich oprav.
Chybová zpráva |
Description |
Řešení |
---|---|---|
Nepodařilo se načíst z které transformace třída dědí základní třídy {0}. |
Dochází, pokud nelze najít rodičovskou třídou zadanou v inherits parametr v směrnice šablony.Zpráva obsahuje číslo směrnice šablony. |
Ujistěte se, že zadaná třída existuje a že sestavení, která existuje v podle směrnice sestavení. |
Nepodařilo se vložit text, file:{0} |
Dochází, když nelze najít šablonu zahrnuty.Zpráva obsahuje název souboru požadovaného zahrnout. |
Ujistěte se, že cesta k souboru je relativní k cestě původní šablony, nebo že soubor je v umístění, které je registrována s hostitelem nebo že je úplná cesta k souboru. |
Při inicializaci objektu transformace byly generovány chyby.Transformace se nespustí. |
Vyvolá se v případě "Initialize()" třída transformace se nezdařila nebo vrátila hodnotu false. |
Kód funkce Initialize() pochází ze třídy základní transformace podle <#@template#> a ze směrnice procesorů.Chyby, která způsobila pravděpodobně nezdaří inicializace je v seznamu chyb.Zjistěte, proč se nezdařilo.Pomocí následujících postupů ladění šablonu můžete prohlédnout skutečné generovaný kód pro Initialize(). |
Sestavení {0}' pro směrnice procesoru {1} nebyla udělena sada oprávnění FullTrust.Pouze důvěryhodné sestavení mohou poskytnout směrnice procesorů.Tato směrnice procesoru nebude načten. |
Dochází, když systém neuděluje oprávnění FullTrust sestavení obsahující směrnice procesoru.Zpráva obsahuje název sestavení a název směrnice procesoru. |
Ujistěte se, pouze pomocí důvěryhodných sestavení v místním počítači. |
Cestu {0} musí být k tomuto počítači místní nebo součástí důvěryhodné zóny. |
Vyvolá se v případě směrnice nebo směrnice sestavení odkazuje na soubor, který není v místním počítači nebo v síti důvěryhodné zóny. |
Ujistěte se, že je adresář, kde jsou umístěny směrnice nebo směrnic sestavení v důvěryhodné zóny.Do důvěryhodné zóny pomocí aplikace Internet Explorer můžete přidat síťový adresář. |
Více syntaktických chyb, například "Neplatný token" catch"nebo"oboru názvů nemůže obsahovat přímo členy" |
Příliš mnoho uzavírací závorkou v kódu šablony.Kompilátor je matoucí je standardní generování kódu. |
Zkontrolujte počet zavření závorky a závorky uvnitř oddělovače kódu. |
Smyčky nebo podmíněné příkazy není kompilován nebo provedeny správně.Příklad:
Tento kód je vždy vyprodukuje výstupní hodnotu i.Pouze "číslo je:" je podmíněna. |
V jazyce C# používejte závorky vždy k ohraničení textových bloků, které jsou vloženy v příkazech ovládacího prvku. |
Přidáte závorky:
|
"Výraz je příliš složitý" při zpracování návrhu šablony nebo kompilace za běhu (předem zpracovaný) šablony. Visual Studiopřestane fungovat při pokusu kontrolovat kód generovaný v šabloně za běhu. |
Blok textu je příliš dlouhý.T4 Převede výraz zřetězení řetězce, s jeden řetězec literálu pro každý řádek šablony textových bloků.Velmi dlouhé textové bloky lze overstep omezení velikosti kompilátoru. |
Rozdělte dlouhý textový blok s blok výraz, jako: <#= "" #> |
Popis upozornění a opravy
Následující tabulka uvádí nejběžnější varování a opravy, pokud je k dispozici.
Upozornění |
Description |
Řešení |
---|---|---|
Načítání souboru zahrnout {0} vrátila hodnotu null nebo prázdný řetězec. |
Nastane v případě, že šablona obsahuje textový soubor je prázdný.Zpráva obsahuje soubor název začleněného souboru. |
Buď odeberte direktivy include nebo zkontrolujte, zda že soubor obsahuje část obsahu. |
Kompilace transformace: |
Připojí řetězec na všechny chyby nebo varování, které pocházejí z kompilátoru při kompilaci transformace.Tento řetězec znamená, že kompilátor vyvolala chyba nebo varování. |
Pokud máte problém najít knihovnu DLL, musíte zadat úplnou cestu nebo úplný silný název, pokud knihovna DLL v mezipaměti GAC. |
Parametr {0}' již existuje v direktivě.Duplicitní parametr je ignorován. |
Vyvolá se v případě, že parametr je zadán více než jednou ve směrnici.Zpráva obsahuje název parametru a číslo řádku dané směrnice. |
Odeberte duplicitní parametr specifikace. |
Došlo k chybě při načítání zahrnout soubor {0}.Směrnice zahrnout budou ignorovány. |
Vyvolá se v případě, že nelze najít soubor zadaný v include směrnice.Zpráva obsahuje název souboru a číslo řádku dané směrnice. |
Přesvědčte se, zda že zahrnout soubor existuje ve stejném adresáři jako původní soubor šablony text nebo v jednom z zahrnout adresáře, které jsou registrovány v systému hostitele. |
Byla zadána neplatná základní třídy třídy transformace.Základní třídy musí být odvozena od Microsoft.VisualStudio.TextTemplating.TextTransformation. |
Dochází při inherits parametr v směrnice šablony určuje, který nedědí z třídy TextTransformation.Zpráva obsahuje číslo směrnice šablony. |
Určete třídu, která pochází z TextTransformation. |
V směrnice "šablony" byl zadán neplatný kultury.Jazyková verze musí být ve formátu "xx-XX".Použije invariantní jazykové verze. |
Dochází, když je nesprávně zadán parametr culture směrnice šablony.Zpráva obsahuje číslo směrnice šablony. |
Změňte parametr culture platné jazykové verze ve formátu "xx-XX". |
Směrnice šablony byla zadána hodnota neplatná ladicí {0}.Program debug hodnota musí být "true" nebo "false".Bude použita výchozí hodnota "false". |
Dochází při debug je nesprávně zadán parametr směrnice šablony.Zpráva obsahuje číslo směrnice šablony. |
Nastavte parametr debug na "hodnotu true" nebo "false". |
Směrnice šablony byla zadána neplatná hodnota HostSpecific {0}.HostSpecific hodnota musí být "true" nebo "false".Bude použita výchozí hodnota "false". |
Dochází při parametr specifického pro hostitele v template je nesprávně uvedené směrnice.Zpráva obsahuje číslo směrnice šablony. |
Nastavte parametr specifického pro hostitele na "true" nebo "false". |
Ve směrnici "šablony" byl zadán neplatný jazyk {0}.Jazyk musí být "C#" nebo "VB".Bude použita výchozí hodnota z "C#". |
Vyvolá se v případě, že je zadán nepodporovaný jazyk v template směrnice.Pouze "C#" nebo "VB" jsou povoleny (písmen).Zpráva obsahuje číslo směrnice šablony. |
Nastavit language parametr v směrnice šablony "C#" nebo "VB". |
Několik směrnic výstup nebyly nalezeny v šabloně.Budou ignorovány všechny kromě první. |
Vyvolá se při více output směrnic, které jsou uvedeny v souboru šablony.Zpráva obsahuje direktivu výstupu duplicitní číslo řádku. |
Odebrat duplicitní output směrnice. |
Více směrnice šablony nebyly nalezeny v šabloně.Budou ignorovány všechny kromě první.V rámci jedné šablony směrnice musí být zadáno více parametrů směrnice šablony. |
Nastane, pokud zadáte více template směrnic v textovém souboru šablony (včetně zahrnuté soubory).Zpráva obsahuje číslo směrnice duplicitní šablony. |
Agregovat různé template směrnic do jednoho template směrnice. |
Směrnice s názvem '{0}' byl zadán žádný procesor.Směrnice budou ignorovány. |
Nastane, pokud zadáte custom směrnice, ale neposkytují processor atribut.Zpráva obsahuje název směrnice a číslo řádku. |
Poskytnout processor atribut s názvem directive procesoru pro tuto směrnici. |
Procesor s názvem {0} nebyla nalezena pro směrnici s názvem {1}.Směrnice budou ignorovány. |
Vyvolá se v případě, že systém nemůže najít directive procesoru, které jste zadali v rámci custom směrnice.Zpráva obsahuje název směrnice procesoru název a číslo řádku této směrnice. |
Nastavit processor atribut v direktivě název směrnice procesoru. |
Nebyl nalezen povinný parametr {0}' pro direktivu {1}.Směrnice budou ignorovány. |
Dochází, když systém neposkytuje požadovaný parametr směrnice.Zpráva obsahuje název chybějícího parametru Název směrnice a číslo řádku. |
Zadejte chybějící parametr. |
Procesor s názvem {0} nepodporuje směrnice s názvem {1}.Směrnice budou ignorovány. |
Vyvolá se v případě směrnice procesor nepodporuje směrnice.Zpráva obsahuje název a řádku číslo problematický směrnice spolu s názvem směrnice procesoru. |
Opravte název této směrnice. |
Direktivy include souboru {0} způsobuje nekonečnou smyčku. |
Zobrazí v případě, že kruhový direktiv jsou určeny (například soubor obsahuje soubor B, která obsahuje soubor A). |
Nezadávejte cyklický direktiv. |
Spouštění transformace: |
Připojí řetězec na všechny chyby nebo varování, které jsou generovány při běhu transformace. |
Nelze použít. |
V rámci bloku byl nalezen neočekávaný počáteční nebo koncový tag.Ujistěte se, že nebyla chybně zadána počáteční nebo koncový tag a že nemáte žádné vnořené bloky v šabloně. |
Zobrazí, pokud máte neočekávanou <# nebo #>.To znamená pokud máte <# za jiné otevřené tag, který ještě nebyl uzavřen, nebo mít #> po žádné neuzavřený značky otevřít dříve, než.Zpráva obsahuje číslo řádku neodpovídající značky. |
Buď odeberte neodpovídající počáteční nebo koncový tag nebo použít znak escape. |
Směrnice byl zadán v nesprávném formátu.Směrnice budou ignorovány.Zadejte směrnice ve formátu <#@ název [název parametru = "parametervalue"] * #> |
Zobrazí analyzátorem směrnice není-li zadán ve správném formátu.Zpráva obsahuje číslo řádku nesprávná směrnice. |
Zkontrolujte všechny směrnice jsou ve formě <#@ název [název parametru = "parametervalue"] * #>.Další informace naleznete v tématu T4 – direktivy textových šablon. |
Nepodařilo se načíst sestavení {0}' pro registrované směrnice procesoru {1}. {2} |
Vyvolá se v případě směrnice procesoru nelze načíst hostitel.Zprávy určuje sestavení podle směrnice procesoru a název směrnice procesoru. |
Ujistěte se, zda směrnice procesoru je správně zaregistrována a že sestavení existuje. |
Nepodařilo se najít typ {0}' v sestavení {1} pro registrované směrnice procesoru {2} {3} |
Dochází, když z jeho sestavení nelze načíst typ směrnice procesoru.Zpráva obsahuje název typu, sestavení a směrnice procesoru. |
Vshost najde informace o směrnice procesoru (název sestavení a typu) v registru.Ujistěte se, zda směrnice procesoru je správně zaregistrována a že existuje typ v sestavení. |
Došlo k potížím při načítání sestavení {0}. |
Vyvolá se v případě, že došlo k potížím při načítání sestavení.Zpráva obsahuje název sestavení. |
Můžete určit v načtení sestavení <assembly @# #> směrnic a podle směrnice procesorů.Chybovou zprávu, která následuje řetězec by měla poskytnout další údaje o příčině selhání načtení sestavení. |
Došlo k chybě vytvoření a inicializace procesoru směrnice s názvem {1}.Typ procesoru je {0}.Směrnice budou ignorovány. |
Dochází, když nelze vytvořit nebo inicializovat směrnice procesoru systému.Zpráva obsahuje název a řádku číslo směrnice a typ procesoru. |
Ujistěte se, že používáte správné směrnice procesoru a že směrnice procesoru nemá veřejný výchozí konstruktor.Jinak použijte možnosti ladění zjistit, proč metodu Initialize() směrnice procesoru je chybné.Další informace naleznete v tématu Ladění textové šablony T4. |
Došlo k výjimce během zpracování směrnice s názvem {0}. |
Vyvolá se v případě směrnice procesoru vyvolá výjimku při zpracování direktivy. |
Ujistěte se, zda jsou správné parametry směrnice procesoru. |
Hostiteli došlo k výjimce při pokusu o vyřešení odkazu na sestavení {0}. |
Vyvolá se v případě, že hostitel vyvolá výjimku při pokusu o odkaz na sestavení řešení.Zpráva obsahuje sestavení odkazovat na řetězec. |
Sestavení odkazy pocházejí z <@# assembly #> směrnice a směrnice procesorů.Ujistěte se, zda je správný parametr sestavení podle parametru "název". |
Pokusit se určit hodnotu {1} není podporován '{0}' pro směrnice {2} |
Způsobeno RequiresProvidesDirectiveProcessor, (vše z něj odvodit naše generované procesory směrnice), zadáte nepodporovaný vyžaduje nebo nabízí argument. |
Ujistěte se, že jména v name = "hodnota" podle dvojic vyžaduje a parametry jsou správné. |