Share via


Direttiva assembly T4

In un modello di testo in fase di progettazione di Visual Studio, la assembly direttiva carica un assembly in modo che il codice del modello possa usare i relativi tipi. L'effetto è simile all'aggiunta di un riferimento all'assembly in un progetto di Visual Studio.

Per una panoramica generale della scrittura di modelli di testo, vedere Scrittura di un modello di testo T4.

Nota

La direttiva assembly in un modello di testo (pre-elaborato) della fase di esecuzione non è necessaria. Aggiungere invece gli assembly necessari ai riferimenti del progetto di Visual Studio.

Utilizzo della direttiva Assembly

La sintassi della direttiva è la seguente:

<#@ assembly name="[assembly strong name|assembly file name]" #>

Il nome dell'assembly deve essere uno dei seguenti:

  • Il nome sicuro dell'assembly nella GAC, quale System.Xml.dll. È inoltre possibile utilizzare la forma estesa, quale name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". Per ulteriori informazioni, vedere AssemblyName.

  • Il percorso assoluto dell'assembly

    È possibile usare la $(variableName) sintassi per fare riferimento a variabili di Visual Studio, $(SolutionDir)ad esempio e %VariableName% per fare riferimento alle variabili di ambiente. Ad esempio:

<#@ assembly name="$(SolutionDir)\MyProject\bin\Debug\SomeLibrary.Dll" #>

La direttiva dell'assembly non ha alcun effetto in un modello di testo pre-elaborato. Includere invece i riferimenti necessari nella sezione Riferimenti del progetto di Visual Studio. Per altre informazioni, vedere Generazione di testo in fase di esecuzione con modelli di testo T4.

Assembly standard

Gli assembly seguenti vengono caricati automaticamente, in modo che non sia necessario scrivere per essi direttive dell'assembly:

  • Microsoft.VisualStudio.TextTemplating.1*.dll

  • System.dll

  • WindowsBase.dll

    Se si utilizza una direttiva personalizzata, il processore di direttiva potrebbe caricare assembly aggiuntivi. Ad esempio, se si scrivono modelli per un linguaggio specifico di dominio (DSL), non è necessario scrivere direttive dell'assembly per gli assembly seguenti:

  • Microsoft.VisualStudio.Modeling.Sdk.1*.dll

  • Microsoft.VisualStudio.Modeling.Sdk.Diagrams.1*.dsl

  • Microsoft.VisualStudio.TextTemplating.Modeling.1*.dll

  • Assembly contenente il modello DSL.

Uso delle proprietà del progetto sia in MSBuild che in Visual Studio

Le macro di Visual Studio come $(SolutionDir) non funzionano in MSBuild. Se si desidera trasformare i modelli nel computer di compilazione, è necessario utilizzare le proprietà del progetto.

Modificare il file con estensione csproj o vbproj per definire una proprietà del progetto. In questo esempio viene definita una proprietà denominata myLibFolder:

<!-- Define a project property, myLibFolder: -->
<PropertyGroup>
    <myLibFolder>$(MSBuildProjectDirectory)\..\libs</myLibFolder>
</PropertyGroup>

<!-- Tell the MSBuild T4 task to make the property available: -->
<ItemGroup>
    <T4ParameterValues Include="myLibFolder">
      <Value>$(myLibFolder)</Value>
    </T4ParameterValues>
  </ItemGroup>

È ora possibile utilizzare la proprietà del progetto nei modelli di testo, che si convertono correttamente in Visual Studio e in MSBuild:

<#@ assembly name="$(myLibFolder)\MyLib.dll" #>

Vedi anche