Elemento Import (MSBuild)
Importa il contenuto di un file di progetto in un altro file di progetto.
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Attributi ed elementi
Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.
Attributi
Attributo |
Descrizione |
---|---|
Project |
Attributo obbligatorio. Percorso del file di progetto da importare.Nel percorso possono essere inclusi caratteri jolly.I file corrispondenti vengono importati secondo l'ordine.Tramite questa funzionalità, per aggiungere codice a un progetto è sufficiente aggiungere il file di codice a una directory. |
Condition |
Attributo facoltativo. Condizione da valutare.Per ulteriori informazioni, vedere Condizioni di MSBuild. |
Elementi figlio
Nessuno
Elementi padre
Elemento |
Descrizione |
---|---|
Elemento radice obbligatorio di un file di progetto MSBuild. |
|
Contiene una raccolta di elementi Import raggruppati sotto una condizione facoltativa. |
Note
Se si utilizza l'elemento Import, è possibile riutilizzare il codice comune a numerosi file di progetto.In tal modo la gestione del codice diventa più semplice, perché tutti gli aggiornamenti apportati al codice condiviso vengono propagati a tutti i progetti in cui il codice viene importato.
Sebbene per convenzione i file di progetto condivisi importati vengano salvati come file con estensione targets, si tratta di file di progetto standard di MSBuild.Sebbene in MSBuild non venga impedito di importare un progetto con un'estensione di file diversa, è consigliabile utilizzare l'estensione targets per motivi di coerenza.
I percorsi relativi nei progetti importati vengono interpretati come relativi rispetto alla directory del progetto importato.Pertanto, se un file di progetto viene importato in diversi file di progetto in percorsi differenti, i percorsi relativi del file di progetto importato verranno interpretati in modo diverso per ogni progetto importato.
A tutte le proprietà MSBuild riservate relative al file di progetto, ad esempio MSBuildProjectDirectory e MSBuildProjectFile, a cui si fa riferimento in un progetto importato vengono assegnati valori in base al file di progetto di importazione.
Se il progetto importato non dispone di un attributo DefaultTargets, i progetti verranno esaminati nell'ordine di importazione e verrà utilizzato il valore del primo attributo DefaultTargets individuato.Se ad esempio il progetto A importa, nell'ordine, il progetto B e il progetto C e se B importa il progetto D, in MSBuild verrà innanzitutto eseguita la ricerca dell'attributo DefaultTargets specificato nel progetto A, quindi nei progetti B e D e infine nel progetto C.
Lo schema di un progetto importato è identico a quello di un progetto standard.Sebbene sia possibile compilare un progetto importato in MSBuild, è improbabile che si verifichi una situazione del genere, in quanto nel progetto importato in genere non sono contenute le informazioni sulle proprietà da impostare o sull'ordine di esecuzione delle destinazioni.Tali informazioni vengono fornite dal progetto in cui viene importato.
[!NOTA]
Le istruzioni di importazione condizionale possono essere utilizzate con MSBuilds della riga di comando, ma non con MSBuild dell'ambiente di sviluppo integrato (IDE) Visual Studio.Le importazioni condizionali vengono valutate utilizzando i valori di configurazione e piattaforma impostati quando il progetto viene caricato. Se in seguito vengono apportate delle modifiche che richiedono una rivalutazione delle istruzioni condizionali nel file di progetto, ad esempio la modifica della piattaforma, in Visual Studio le condizioni su proprietà ed elementi, a differenza di quelle sulle importazioni, vengono rivalutate.Dal momento che l'istruzione condizionale dell'importazione non è rivalutata, l'importazione viene ignorata.
Per risolvere questo problema, inserire le importazioni condizionali nei file con estensione targets oppure inserire il codice in un blocco condizionale, ad esempio un blocco Elemento Choose (MSBuild).
Caratteri jolly
In .NET Framework 4, MSBuild consente caratteri jolly nell'attributo Project.In presenza di caratteri jolly, tutte le corrispondenze trovate vengono ordinate (per riproducibilità) e quindi importate nello stesso ordine che viene dunque considerato come impostato in modo esplicito.
Tale operazione è utile se si desidera offrire un punto di estendibilità in modo da consentire a un altro utente di importare un file senza che venga richiesto di aggiungere in modo esplicito il nome file al file importato.A tale scopo, nella parte iniziale del file di Microsoft.Common.Targets è presente la seguente riga.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Esempio
Nell'esempio riportato di seguito viene illustrato un progetto in cui sono contenuti diversi elementi e proprietà e in cui viene importato un file di progetto generale.
<Project DefaultTargets="Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<resourcefile>Strings.resx</resourcefile>
<compiledresources>
$(O)\$(MSBuildProjectName).Strings.resources
</compiledresources>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" />
<Reference Include="System" />
<Reference Include="System.Data" />
</ItemGroup>
<Import Project="$(CommonLocation)\General.targets" />
</Project>
Vedere anche
Attività
Procedura: utilizzare la stessa destinazione in più file di progetto