Generowanie kodu w proces kompilacji
Można wywoływać przekształcenie tekstu jako część procesu tworzenia Visual Studio roztworu.Umożliwia to zapewnić pliki generowane na podstawie szablonów są aktualne, zanim zostały one skompilowane.Pozwala to uniknąć sytuacji, w której użytkownik zapomniał kliknij Transform wszystkie szablony przed budowania projektu lub sprawdzanie w kodzie.Transformacja tekstu zadania mogą być wykonywane zarówno przez Visual Studio lub MSBuild i na serwerze kompilacji.
Łącznie z zadaniami przekształcić tekst w plikach programu Project
Zainstaluj wizualizacji i modelowania SDK
Aby włączyć kompilacji zadania na komputerze dewelopera, zainstaluj programu Visual Studio, wizualizacji i modelowania SDK.
Aby włączyć zadania kompilacji serwera kompilacji, zobacz Przekształcenie tekstu na serwerze budować.
Edytowanie pliku projektu
Aby wywołać przekształcenie tekstu, należy edytować plik, który definiuje projektu.Te właściwości nie można edytować w edytorze właściwości projektu.W związku z tym należy zamknąć projekt i edytować go jako plik tekstowy.
Aby edytować tekst pliku projektu
W oknie Solution Explorer, kliknij prawym przyciskiem myszy projekt, a następnie kliknij przycisk Projektu Unload.
Ponownie kliknij prawym przyciskiem myszy projekt, a następnie kliknij przycisk EdytujProjekt.
Tekst pliku projektu pojawia się w edytorze XML.
Aby ponownie otworzyć projektu po zakończeniu edycji
Zamknij Edytor XML.
W oknie Solution Explorer, kliknij prawym przyciskiem myszy projekt, a następnie kliknij przycisk Reload projektu.
Importowanie obiektów docelowych przekształcenie tekstu
Zadania kompilacji przekształcenie tekstu są zdefiniowane w pojedynczym pliku.Po standardowych cele C# lub Visual Basic, należy zaimportować go.
Aby zaimportować tekst cele transformacji
Wyszukiwanie pliku dla wiersza podobny do jednego z tych wierszy:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- lub -
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
Po tej linii należy wstawić importu tekstu dynamicznego:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v11.0\Microsoft.TextTemplating.targets" />
Ustawianie właściwości do kontroli sposobu konstruowania jest wykonywane.
Wstaw następujący tekst w pliku projektu.Zobacz poniższe sekcje dotyczące innych właściwości, które mogą być wstawiane z tej grupy właściwości.
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<!-- Other properties can be inserted here -->
</PropertyGroup>
TransformOnBuildpowoduje, że wszystkie szablony w programie project mają być wykonane podczas budowania projektu.
Wywoływanie transformacji
Przekształcanie wszystkich szablonów w budowania projektu
Jeśli plik projektu zawiera następujące właściwości wszystkich szablonów tekst projektu zostanie wykonana w każdym przypadku, gdy zbudowane projektu, z zastrzeżeniem funkcja przyrostowe kompilacji.
<TransformOnBuild>true</TransformOnBuild>
Można wywoływać przekształca albo naciskając klawisz F5 w Visual Studio, lub za pomocą MSBuild.Na przykład:
msbuild myproject.csproj
Jeżeli pominięto parametr TransformOnBuild lub zestaw ją na wartość false, szablony nie zostaną przekształcone jako automatyczne części budowania projektu.
Dodawanie ścieżek odniesienia
Można dodać do zestawu ścieżek, w których host szuka zestawów, do których odwołuje się szablony.Na przykład:
<ItemGroup>
<!-- Add VS\...\PublicAssemblies to the list of places
to look for assemblies used by templates. -->
<T4ReferencePath Include="$(VsIdePath)PublicAssemblies\" />
</ItemGroup>
Przekształcanie określone szablony
Określone pliki można przekształcać, wywołując Transform zadań z msbuild narzędzia.To zadanie nie zależy od TransformOnBuild właściwość, a nie kompilowania plików projektu.Należy zaimportować pliku tekstowego cele dynamicznego jak opisano w poprzedniej sekcji.
Na przykład, aby przekształcić określonego pliku:
msbuild myproj.proj /t:Transform /p:TransformFile=MyTemplate.tt
Można także użyć znaków wieloznacznych w TransformFile parametru.Na przykład polecenie to przekształca wszystkie pliki .tt w folderze GeneratedCode:
msbuild dsl.csproj /t:Transform /p:TransformFile="GeneratedCode\**\*.tt"
Kompilacja przyrostowe
Domyślnie Menedżer kompilacji stara się uniknąć wykonywania szablonu, jeśli jej plik wyjściowy jest aktualny.Aby to zrobić, monitoruje system plików, aby zobaczyć, które pliki są odczytywane przez kod szablonu.Przy każdej kolejnej okazji porównuje daty modyfikacji tych plików z datą pliku wyjściowego.Szablon jest wykonywana, jeśli każdy plik wejściowy został zmodyfikowany bardziej niedawno niż plik wyjściowy.Szablon jest również wykonywane, jeżeli nie ma żadnych informacji o poprzednich egzekucji tego szablonu.
Wynik jest, że plik wyjściowy będzie regenerowany, jeśli starsza niż dowolny z następujących plików:
Tekst pliku szablonu
Pliki, które są określone w <#@include#> dyrektyw
Pliki, które są odczytywane przez kod wprowadzony w szablonie
Pliki, które są włączone lub odczytać przez przetwórcę w dyrektywie, używany w szablonie
Jeśli chcesz upewnić się, że wszystkie szablony są wykonywane w każdym kompilacji należy wstawić tę właściwość:
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>
Kontrola źródła
Nie ma żadnych szczególnych wbudowane funkcje integracji z systemu kontroli źródła.Można jednak dodać własne rozszerzenia, na przykład aby wyewidencjonować i zaewidencjonować plik wygenerowany.
Domyślnie, unika zastąpienie pliku, który jest oznaczony jako read-tylko zadania Przekształć tekst i po napotkaniu tego pliku, błąd jest rejestrowany Visual Studio lista błędów i awarii zadania.
Aby określić, powinny zostać zastąpione pliki tylko do odczytu, Wstaw tę właściwość:
<OverwriteReadOnlyOuputFiles>true</OverwriteReadOnlyOuputFiles>
Chyba że można dostosować krok postprocessing, ostrzeżenie będą rejestrowane na liście błędów, gdy plik jest zastępowany.
Dostosowywanie procesu tworzenia
Można dostosować proces kompilacji, na przykład wyewidencjonować pliki, które zostały zastąpione.Dwa punkty dostosowania są dostarczane, które są nazywane przed i po przekształceniu.
Aby zdefiniować te punkty, należy zdefiniować właściwości $(BeforeTransform) i $(AfterTransform).
Na przykład:
<PropertyGroup>
<BeforeTransform>CustomPreTransform</BeforeTransform>
<AfterTransform>CustomPostTransform;$(AfterTransform)</AfterTransform>
</PropertyGroup>
<Target Name="CustomPreTransform">
<Message Text="In CustomPreTransform..." Importance="High" />
</Target>
<Target Name="CustomPostTransform">
<Message Text="In CustomPostTransform..." Importance="High" />
</Target>
W AfterTransform, można odwoływać się do poniższej listy:
GeneratedFiles - lista plików zapisanych przez proces.Dla tych plików, które są istniejące pliki tylko do odczytu będzie prawdziwe %(GeneratedFiles.ReadOnlyFileOverwritten).Pliki te można sprawdzić kontroli źródła.
NonGeneratedFiles - lista plików tylko do odczytu, które nie zostały zastąpione.
Przy użyciu tych list, można na przykład wyewidencjonować zastępowanie plików.
Transformacja tekstu w serwera kompilacji
Jeśli serwer kompilacji jest uruchamiany na komputerze, na którym Visual Studio jest nie jest zainstalowany, należy skopiować następujące pliki do komputera kompilacji z komputera, na którym Visual Studio SDK jest zainstalowany:
\Program Files\Microsoft visual Studio 2010 SDK\VisualStudioIntegration\Common\Assemblies\v4.0\
Microsoft.VisualStudio.TextTemplating.11.0.dll
Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll
Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll
\Program Files\MSBuild\Microsoft\VisualStudio\TextTemplating\v11.0\
- Microsoft.VisualStudio.TextTemplating.SDK.Host.11.0.dll
\Program Files\Microsoft visual Studio 11.0\Common7\IDE\PublicAssemblies\
- Microsoft.VisualStudio.TextTemplating.Modeling.11.0.dll
Aby uzyskać więcej informacji, zobacz Wdrażanie i konfigurowanie kontrolera kompilacji.