Napotkano na mały problem z generowaniem mojego kodu T4.Jak wyłączyć #line dyrektywy zapisywane w pliku wyjściowym generowania T4
Złamałem szablony T4 w oddzielne pliki i umieściłem je w różnych katalogach, zrobiłem to, aby części mojego generowania kodu mogły być ponownie użyte w wielu projektach, np. Generowanie modelu, generowanie repozytorium i generowanie usługi zawierają podstawowy plik EntityGeneration.tt.
Niestety, gdy TextTemplating rozwiązuje moje zagnieżdżone załączniki, buduje długą dyrektywę wstępnego procesora #line w wygenerowanym pliku .cs, łącząc wszystkie ścieżki względne z plikiem zawartym na najniższym poziomie.
Niestety, ponieważ ta ścieżka jest zbudowana ze względnych ścieżek, kończy się niepotrzebnie długo, tak długo, że przekracza maksymalną długość ścieżki (Windows 7).
Oto linia winy z wygenerowanego kodu w przypadku jesteś zainteresowany:
#line 3 "C:\VS2010\AlbatrossTravelGroup\ASC\AlbatrossTravelGroup.ASC.BusinessRules\Services\Contracts\..\..\..\..\AlbatrossTravelGroup.BusinessRules\Services\Contracts\..\..\..\AlbatrossTravelGroup.Models\Repositories\Contracts\..\..\../AlbatrossTravelGroup.Common/CodeGeneration.tt"
Moje pytanie brzmi, jak mogę wyłączyć dyrektywy te są zapisywane w pliku wygenerowanego kodu? W przeciwnym razie, jak mogę uniknąć tego problemu bez zmiany mojej struktury plików?
Obecnie jako rozwiązanie tymczasowe utworzyłem folder "CodeGeneration", który tworzy dowiązania symboliczne w tym folderze do każdego z moich plików T4, które należy uwzględnić.Następnie zamiast każdego dołączonego pliku T4 zawierającego inne pliki T4 poprzez ścieżkę względną, używają one tylko nazwy pliku. Następnie w miejscu docelowym, w którym chcę używać szablonów T4, używam ścieżki względnej do katalogu "CodeGeneration". Powoduje to znacznie krótszą długość ścieżki, ponieważ używa o wiele mniej względnych ścieżek. Jeśli ktoś chce pełnego wyjaśnienia, zamieści odpowiedź na żądanie :) – Lukazoid
Moje tymczasowe rozwiązanie powyżej się zepsuło, nie mam pojęcia, dlaczego studio graficzne po prostu zaczęło nie rozwiązywać plików. Wreszcie muszę użyć rejestru, aby określić dodatkowe tt obejmują katalogi, mniej niż idealne, ale wydaje się, że jedyną rzeczą, która działa. – Lukazoid
Możesz spróbować czegoś takiego jak przedstawione rozwiązanie makro VS [tutaj] (http://stackoverflow.com/questions/3506525/t4-preprocessed-template-debugging-n-working-visual-studio-2010-rtm/7505247#7505247). – BitMask777