Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
di Jason Lee
In questo argomento viene descritto come raccogliere informazioni dettagliate sul processo di creazione del pacchetto usando la proprietà EnablePackageProcessLoggingAndAssert in Microsoft Build Engine (MSBuild).
Quando si imposta la proprietà EnablePackageProcessLoggingAndAssert su vero, MSBuild:
- Aggiungi ulteriori informazioni sul processo di confezionamento ai log di compilazione.
- Registrare gli errori in determinate condizioni, ad esempio, se vengono trovati file duplicati nell'elenco di pacchettizzazione.
- Creare una directory Log nella cartella ProjectName_Package e usarla per registrare le informazioni sui file che si stanno impacchettando.
Se il processo di creazione del pacchetto ha esito negativo o i pacchetti di distribuzione Web non contengono i file previsti, è possibile usare queste informazioni per risolvere i problemi relativi al processo e individuare il punto in cui si verificano problemi.
Annotazioni
La proprietà EnablePackageProcessLoggingAndAssert funziona solo se si compila il progetto usando la configurazione Debug . La proprietà viene ignorata in altre configurazioni.
Questo argomento fa parte di una serie di esercitazioni basate sui requisiti di distribuzione aziendali di una società fittizia denominata Fabrikam, Inc. Questa serie di esercitazioni usa una soluzione di esempio, la soluzione Contact Manager, per rappresentare un'applicazione Web con un livello realistico di complessità, tra cui un'applicazione ASP.NET MVC 3, un servizio Windows Communication Foundation (WCF) e un progetto di database.
Il metodo di distribuzione al centro di queste esercitazioni si basa sull'approccio split project file descritto in Informazioni sul file di progetto, in cui il processo di compilazione è controllato da due file di progetto, uno contenente istruzioni di compilazione applicabili a ogni ambiente di destinazione e uno contenente le impostazioni di compilazione e distribuzione specifiche dell'ambiente. In fase di compilazione, il file di progetto specifico dell'ambiente viene unito al file di progetto indipendente dall'ambiente per formare un set completo di istruzioni di compilazione.
Informazioni sulla proprietà EnablePackageProcessLoggingAndAssert
Compilazione e creazione di pacchetti di progetti di applicazioni Web descrive come la pipeline di pubblicazione Web (WPP) fornisca un set di target MSBuild che estendono la funzionalità di MSBuild e consentano l'integrazione con lo strumento di distribuzione Web di Internet Information Services (IIS) (Web Deploy). Quando si crea un pacchetto di un progetto di applicazione Web, si invocano i bersagli WPP.
Molte di queste destinazioni WPP includono la logica condizionale che registra informazioni aggiuntive quando la proprietà EnablePackageProcessLoggingAndAssert è impostata su true. Ad esempio, se si esamina la destinazione del pacchetto , è possibile notare che crea una directory di log aggiuntiva e scrive un elenco di file in un file di testo se EnablePackageProcessLoggingAndAssert è uguale a true.
<Target Name="Package"
Condition="$(_CreatePackage)"
DependsOnTargets="$(PackageDependsOn)">
<!--Log the information Set $(EnablePackageProcessLoggingAndAssert) to True
if you want to see this information-->
<MakeDir Condition="$(EnablePackageProcessLoggingAndAssert) And
!Exists('$(PackageLogDir)')"
Directories="$(PackageLogDir)" />
<WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
Encoding="utf-8"
File="$(PackageLogDir)\Prepackage.txt"
Lines="@(FilesForPackagingFromProject->'
From:%(Identity)
DestinationRelativePath:%(DestinationRelativePath)
Exclude:%(Exclude)
FromTarget:%(FromTarget)
Category:%(Category)
ProjectFileType:%(ProjectFileType)')"
Overwrite="True" />
Annotazioni
Le destinazioni WPP sono definite nel file Microsoft.Web.Publishing.targets nella cartella %PROGRAMFILES(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web. È possibile aprire questo file ed esaminare le destinazioni in Visual Studio 2010 o in qualsiasi editor XML. Prestare attenzione a non modificare il contenuto del file.
Abilitazione della registrazione aggiuntiva
È possibile fornire un valore per la proprietà EnablePackageProcessLoggingAndAssert in vari modi, a seconda della modalità di compilazione del progetto.
Se si compila il progetto dalla riga di comando, è possibile specificare un valore per la proprietà EnablePackageProcessLoggingAndAssert come argomento della riga di comando:
MSBuild.exe /t:Build
/p:Configuration=DEBUG
/p:DeployOnBuild=true
/p:DeployTarget=Package
/p:EnablePackageProcessLoggingAndAssert=true
[Your project].csproj
Se si usa un file di progetto personalizzato per compilare i progetti, è possibile includere il valore EnablePackageProcessLoggingAndAssert nell'attributo Properties dell'attività MSBuild :
<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
<MSBuild Projects="@(ProjectsToBuild)"
Properties="OutDir=$(OutputRoot);
Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package;
EnablePackageProcessLoggingAndAssert=true"
Targets="Build" />
</Target>
Se si usa una definizione di compilazione di Team Foundation Server (TFS) per compilare i progetti, è possibile fornire un valore per la proprietà EnablePackageProcessLoggingAndAssert nella riga Argomenti di MSBuild :
Annotazioni
Per altre informazioni sulla creazione e la configurazione delle definizioni di compilazione, vedere Creazione di una definizione di compilazione che supporta la distribuzione.
In alternativa, se si desidera includere il pacchetto in ogni compilazione, è possibile modificare il file di progetto per il progetto dell'applicazione Web per impostare la proprietà EnablePackageProcessLoggingAndAssert su true. È necessario aggiungere la proprietà al primo elemento PropertyGroup all'interno del file con estensione csproj o vbproj.
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="...">
<PropertyGroup>
<EnablePackageProcessLoggingAndAssert
Condition=" '$(EnablePackageProcessLoggingAndAssert)' == '' ">
true
</EnablePackageProcessLoggingAndAssert>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
Revisione dei file di log
Quando si compila e crea un pacchetto di un progetto di applicazione Web con EnablePackageProcessLoggingAndAssert impostato su true, MSBuild crea una cartella aggiuntiva denominata Log nella cartella ProjectName_Package. La cartella Log contiene vari file:
L'elenco dei file visualizzati varia in base agli elementi del progetto e al processo di compilazione. Tuttavia, questi file vengono in genere usati per registrare l'elenco di file raccolti dal WPP per la creazione di pacchetti, in varie fasi del processo:
Il filePreExcludePipelineCollectFilesPhaseFileList.txt elenca i file raccolti da MSBuild per la creazione di pacchetti prima che tutti i file specificati per l'esclusione vengano rimossi.
Il fileAfterExcludeFilesFilesList.txt contiene l'elenco di file modificato dopo la rimozione di tutti i file specificati per l'esclusione.
Annotazioni
Per altre informazioni sull'esclusione di file e cartelle dal processo di creazione del pacchetto, vedere Esclusione di file e cartelle dalla distribuzione.
Il file AfterTransformWebConfig.txt elenca i file raccolti per la creazione di pacchetti dopo l'esecuzione delle trasformazioni Web.config. In questo elenco, tutti i file di trasformazione Web.config specifici della configurazione, come ad esempio Web.Debug.config e Web.Release.config, vengono esclusi dall'elenco dei file per l'impacchettamento. Una singola Web.config trasformata è inclusa al loro posto.
Il filePostAutoParameterizationWebConfigConnectionStrings.txt contiene l'elenco dei file dopo che le stringhe di connessione nel file Web.config sono state parametrizzate. Questo è il processo che consente di sostituire le stringhe di connessione con le impostazioni corrette per l'ambiente di destinazione quando si distribuisce il pacchetto.
Il file Prepackage.txt contiene l'elenco definitivo dei file pre-build che devono essere inclusi nel pacchetto.
Annotazioni
I nomi dei file di log aggiuntivi corrispondono in genere alle destinazioni WPP. È possibile esaminare queste destinazioni esaminando il file Microsoft.Web.Publishing.targets nella cartella %PROGRAMFILES(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web.
Se il contenuto del pacchetto Web non è quello previsto, esaminare questi file può essere un modo utile per identificare a quale punto del processo si è verificato un errore.
Conclusione
In questo argomento è stato descritto come usare la proprietà EnablePackageProcessLoggingAndAssert in MSBuild per risolvere i problemi relativi al processo di creazione dei pacchetti. Illustra i diversi modi in cui è possibile fornire il valore della proprietà al processo di compilazione e descrive le informazioni aggiuntive registrate quando si imposta la proprietà su true.
Altre informazioni
Per altre informazioni sull'uso di file di progetto MSBuild personalizzati per controllare il processo di distribuzione, vedere Informazioni sul file di progetto e Informazioni sul processo di compilazione. Per altre informazioni su WPP e su come gestisce il processo di creazione dei pacchetti, vedere Compilazione e creazione di pacchetti di progetti di applicazioni Web. Per indicazioni su come escludere file e cartelle specifici dai pacchetti di distribuzione Web, vedere Esclusione di file e cartelle dalla distribuzione.