Attività GenerateTemporaryTargetAssembly

L'attività GenerateTemporaryTargetAssembly genera un assembly se almeno una pagina XAML in un progetto fa riferimento a un tipo dichiarato localmente in tale progetto. L'assembly generato viene rimosso dopo il completamento del processo di compilazione o in caso di esito negativo del processo.

Parametri dell'attività

Parametro Descrizione
AssemblyName Parametro String obbligatorio.

Specifica il nome breve dell'assembly generato per un progetto ed è anche il nome dell'assembly di destinazione generato temporaneamente. Ad esempio, se un progetto genera un eseguibile di Windows il cui nome è WinExeAssembly.exe, il parametro AssemblyName ha un valore WinExeAssembly.
CompileTargetName Parametro String obbligatorio.

Specifica il nome della destinazione MSBuild usata per generare assembly dai file di codice sorgente. Il valore tipico per CompileTargetName è CoreCompile.
CompileTypeName Parametro String obbligatorio.

Specifica il tipo di compilazione eseguito dalla destinazione specificata dal parametro CompileTargetName. Per la destinazione CoreCompile questo valore è Compile.
CurrentProject Parametro String obbligatorio.

Specifica il percorso completo del file di progetto MSBuild per il progetto che richiede un assembly di destinazione temporaneo.
GeneratedCodeFiles Parametro ITaskItem[] facoltativo.

Specifica l'elenco di file di codice gestito specifici del linguaggio generati dall'attività MarkupCompilePass1.
IntermediateOutputPath Parametro String obbligatorio.

Specifica la directory in cui viene generato l'assembly di destinazione temporaneo.
MSBuildBinPath Parametro String obbligatorio.

Specifica il percorso di MSBuild.exe, necessario per compilare l'assembly di destinazione temporaneo.
ReferencePath Parametro ITaskItem[] facoltativo.

Specifica un elenco di assembly, per percorso e nome file, a cui fanno riferimento i tipi compilati nell'assembly di destinazione temporaneo.
ReferencePathTypeName Parametro String obbligatorio.

Specifica il parametro usato dal parametro di destinazione della compilazione (CompileTargetName), che specifica l'elenco di riferimenti ad assembly (ReferencePath). Il valore appropriato è ReferencePath.

Osservazioni:

Il primo passaggio di compilazione del markup, eseguito da MarkupCompilePass1, compila i file XAML in formato binario. Di conseguenza, il compilatore necessita di un elenco degli assembly a cui si fa riferimento che contengono i tipi usati dai file XAML. Tuttavia, se un file XAML usa un tipo definito nello stesso progetto, non viene creato un assembly corrispondente per tale progetto finché non viene compilato il progetto. Pertanto, non è possibile fornire un riferimento all'assembly durante il primo passaggio di compilazione del markup.

MarkupCompilePass1 invece rinvia la conversione di file XAML che contengono riferimenti ai tipi nello stesso progetto in un secondo passaggio di compilazione di markup, eseguito da MarkupCompilePass2. Prima dell'esecuzione di MarkupCompilePass2, viene generato un assembly temporaneo Questo assembly contiene i tipi usati dai file XAML il cui passaggio di compilazione di markup è stato posticipato. Un riferimento all'assembly generato viene fornito a MarkupCompilePass2 quando viene eseguito per consentire la conversione dei file XAML di compilazione posticipati in formato binario.

Esempio

Nell'esempio seguente viene generato un assembly temporaneo poiché Page1.xaml contiene un riferimento a un tipo che si trova nello stesso progetto.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask
    TaskName="Microsoft.Build.Tasks.Windows.GenerateTemporaryTargetAssembly"
    AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
  <Target Name="GenerateTemporaryTargetAssemblyTask">
    <GenerateTemporaryTargetAssembly
      AssemblyName="WPFMSBuildSample"
      CompileTargetName="CoreCompile"
      CompileTypeName="Compile"
      CurrentProject="FullBuild.proj"
      GeneratedCodeFiles="obj\debug\app.g.cs;obj\debug\Page1.g.cs;obj\debug\Page2.g.cs"
      ReferencePath="c:\windows\Microsoft.net\Framework\v2.0.50727\System.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationCore.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationFramework.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\WindowsBase.dll"
      IntermediateOutputPath=".\obj\debug\"
      MSBuildBinPath="$(MSBuildBinPath)"
      ReferencePathTypeName="ReferencePath"/>
  </Target>
</Project>

Vedi anche