Import — Element (MSBuild)
Importuje zawartość pliku jednego projektu do innego pliku projektu.
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Atrybuty i elementy
W poniższych sekcjach opisano atrybuty i elementy podrzędne elementy nadrzędne.
Atrybuty
Atrybut |
Opis |
---|---|
Project |
Wymagany atrybut. Ścieżka pliku projektu do zaimportowania.Ścieżka może zawierać symboli wieloznacznych.Pasujące pliki są importowane w pewnym określonym porządku.Za pomocą tej funkcji, można dodać kod do projektu tylko przez dodanie kodu do katalogu. |
Condition |
Atrybut opcjonalny. Warunek oceniane.Aby uzyskać więcej informacji, zobacz Warunki MSBuild. |
Elementy podrzędne
Brak
Elementy nadrzędne
Element |
Opis |
---|---|
Element główny wymagane MSBuild pliku projektu. |
|
Kolekcja zawiera Import elementy pogrupowane pod warunkiem, opcjonalne. |
Uwagi
Za pomocą Import element, można użyć ponownie kod, który jest wspólny dla wielu plików projektu.Ta funkcja ułatwia utrzymywanie kodu, ponieważ wszelkie aktualizacje wprowadzone do udostępnionego kodu get propagowane do wszystkich projektów, które go zaimportować.
Umownie, udostępnionego projektu importowane pliki są zapisywane jako pliki .targets, ale są one standardowe MSBuild pliki projektu.MSBuildnie uniemożliwiają importowanie projektu, który ma rozszerzenie nazwy pliku innej, ale zalecane używanie rozszerzenia .targets w celu zachowania spójności.
Ścieżki względne w projektach przywożone są interpretowane względem katalogu projektu przywozu.W związku z tym jeśli plik projektu jest importowana do kilku plików projektu w różnych lokalizacjach, ścieżki względne w zaimportowanego pliku projektu będą interpretowane inaczej dla każdego projektu przywożonych.
Wszystkie MSBuild zarezerwowane właściwości, które odnoszą się do pliku projektu, na przykład, MSBuildProjectDirectory i MSBuildProjectFile, że odwołanie do importowany projekt są przypisane wartości na podstawie przywozu pliku projektu.
Jeśli importowany projekt nie jest DefaultTargets atrybut przywożone projekty są kontrolowane zgodnie z kolejnością, są przywożone, a wartość pierwszego odkryte DefaultTargets atrybut jest używany.Na przykład, jeśli ProjectA przywóz ProjectB i ProjectC (w tej kolejności), i ProjectB przywozu ProjectD MSBuild szuka najpierw DefaultTargets określone w ProjectA, a następnie ProjectB, a następnie ProjectD i ostatecznie ProjectC.
Schemat importowany projekt jest identyczna z standard project.Chociaż MSBuild może być mogących budować importowany projekt, jest mało prawdopodobne, ponieważ importowany projekt zazwyczaj nie zawiera informacji na temat właściwości, które zestawu lub zamówienia do uruchamiania obiektów docelowych.Importowany projekt zależy od projektu, do którego jest przywożone podać tę informację.
[!UWAGA]
Podczas gdy instrukcje warunkowe importu pracować z wiersza polecenia MSBuilds, nie działają w systemie MSBuild w Visual Studio zintegrowane środowisko dewelopowania (IDE).Przywóz warunkowego są oceniane za pomocą wartości konfiguracji i platform, które są ustawiane podczas ładowania projektu. Jeśli następnie zmian, które wymagają ponownej oceny instrukcje warunkowe w pliku projektu, na przykład zmiana platformy, Visual Studio reevaluates warunki dla właściwości i elementów, ale nie na przywóz.Ponieważ warunkowe przywóz nie jest ponownie ocenione, przywóz jest pomijane.
Aby obejść ten problem, umieścić przywozu warunkowego w plikach .targets lub umieść kod w bloku warunkowego, takich jak Choose — Element (MSBuild) bloku.
Symbole wieloznaczne
W.NET Framework 4, program MSBuild umożliwia symboli wieloznacznych w atrybucie projektu.W przypadku symboli wieloznacznych wszystkich znalezionych są sortowane (dla odtwarzalności), a następnie są przywożone w tym celu tak, jakby zamówienia miały jawnie ustawiony.
Jest to przydatne, jeśli chcesz zaoferować punktu rozszerzalności tak, aby ktoś inny można zaimportować plik bez konieczności jawnie dodać nazwę pliku do importowania pliku.W tym celu Microsoft.Common.Targets zawiera następujący wiersz w górnej części pliku.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Przykład
Poniższy przykład pokazuje projekt, który ma kilka elementów i właściwości i importuje plik projektu ogólnego.
<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>
Zobacz też
Zadania
Porady: użycie tej samej wartości docelowej w wielu plikach projektów