Używam T4 do generowania niektórych ekranów i kodu warstwy pośredniej dla projektu, i chciałbym użyć Linq, aby uprościć niektóre z mojego kodu szablonu. Jednak gdy próbuję użyć Linq, szablon zgłasza błąd składni.Jak mogę używać Linq w szablonie T4?
65
A
Odpowiedz
95
Domyślnie w Visual Studio 2008 (i jak w większości przykładów online) szablon jest kompilowany za pomocą Framework 2.0, który nie zawiera Linq. (Patrz MSDN forum thread)
Aby rozwiązać ten problem, potrzebne są trzy kroki:
- W atrybutu języka szablonie jest określić "C# v3.5" lub "VBv3.5" - ten krok nie jest wymagany dla VS2010, gdzie .Net 4.0 jest zawsze używany.
- Dodaj dyrektywę montażową dla System.Core.dll
- Importowanie nazw System.Linq
Szablon będzie teraz wyglądać tak:
<#@ template language="C#v3.5" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
Teraz można używać LINQ oraz inne nowe funkcje językowe w twoim szablonie.
Powiązane problemy
- 1. Jak mogę uzyskać intellisense w szablonie T4?
- 2. Czy mogę używać T4 programowo z C#?
- 3. Czy mogę wykonać kod z innego pliku w szablonie T4 .tt do generowania kodu?
- 4. Czytanie klas w przestrzeni nazw w szablonie t4
- 5. Jak używać literału {{w szablonie wąsów?
- 6. Co specyfika dla hosta oznacza w szablonie t4?
- 7. Jak używać request.META.get ("HTTP_REFERER") w szablonie?
- 8. Jak używać zagnieżdżonego typedef w szablonie?
- 9. Jak używać Jak w zapytaniu Linq?
- 10. Użyj klasy wewnątrz szablonu T4.
- 11. Jak mogę określić T4 (Text Templates), aby używać C# 4.0, w VS2010?
- 12. Jak używać Union w Linq Query
- 13. Jak używać LINQ oraz w Punkcie
- 14. Czy w szablonach T4 można używać warunkowych symboli kompilacji
- 15. Jak mogę użyć warunku na szablonie meteorów?
- 16. Angular 2 ng2 Jak używać enumu TypeScript w szablonie?
- 17. Jak używać niestandardowej czcionki w szablonie e-mail
- 18. Jak używać składni vue.js w szablonie ciągów z dropzone.js
- 19. T4 szablon i Assembly.Load
- 20. LINQ przyłączyć iquery, jak używać defaultifempty
- 21. Jak używać LINQ do "przycinania" słownika?
- 22. Jak mogę zamówić wynik grupy, w Linq?
- 23. Czy mogę wywołać sesję w szablonie/widoku w Play Framework
- 24. Jak używać wyładowań z Dynamic Linq?
- 25. Jak używać Linq z Castle ActiveRecord
- 26. Jak używać LINQ do wybierania do obiektu?
- 27. Jak mogę uzyskać błędy pojedynczego pola w szablonie gałązki Symfony2?
- 28. Jak mogę pośrednio wywołać makro w szablonie Jinja2?
- 29. Jak mogę powtórzyć blok N razy w szablonie Meteor Spacebars?
- 30. Jak mogę odzyskać typ zwracanej funkcji do użycia w szablonie?
Musiałem użyć <# @ assembly name = "System.Core, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" #>, aby uzyskać wersję 3.5 pliku System.Core.dll. –
Przez przypadek projekt "zawierający" był projektem 2.0/3.0? To może wyjaśniać, dlaczego nie wiedział, jak znaleźć System.Core bez w pełni kwalifikowanej nazwy. – GalacticCowboy
To działało dla mnie po zmianie języka z 'C#' na 'C# v3.5'. Dzięki! Dziwne, jak intellisense nie pokazało tego jako opcji! –