Porady: użycie tej samej wartości docelowej w wielu plikach projektów
Jeśli zostały utworzone kilka MSBuild pliki projektu może mieć napotykasz trzeba użyć tych samych zadań i celów w różnych plików projektów.Pełny opis tych zadań i celów łącznie w każdym pliku projektu, a nie można zapisać elementu docelowego w oddzielny plik projektu i następnie zaimportować projektu do innego projektu, który musi korzystać z obiektu docelowego.
Za pomocą elementu importu
Import Element jest używany, aby wstawić jeden plik projektu do innego pliku projektu.Jest importowany plik projektu musi być prawidłową MSBuild pliku projektu i zawierać poprawnie sformułowany kod XML.Project Atrybut określa ścieżkę do zaimportowanego pliku projektu.Aby uzyskać więcej informacji na Import element, zobacz Import — Element (MSBuild).
Aby zaimportować projekt
Zdefiniuj w importowania pliku projektu wszystkie właściwości i elementy, które są używane jako parametry dla właściwości i elementy projektu przywożonych.
Użyj Import element, aby zaimportować projekt.Na przykład:
<Import Project="MyCommon.targets"/>
Po Import element, zdefiniować wszystkie właściwości i elementy i elementy, które należy zastąpić domyślne definicji właściwości w projekcie przywożonych.
Kolejność
Gdy MSBuild osiągnie Import element importowany projekt skutecznie jest wstawiany do przywozu projektu w miejscu Import element.Dlatego lokalizację Import element może mieć wpływ na wartości właściwości i elementy.Jest ważne zrozumienie właściwości i elementy, które są ustawiane przez importowany projekt i właściwości i elementy, które używa importowany projekt.
Gdy buduje projektu, wszystkie właściwości są oceniane po raz pierwszy, następują elementy.Na przykład następujący kod XML definiuje zaimportowanego pliku projektu MyCommon.targets:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyCommon</Name>
</PropertyGroup>
<Target Name="Go">
<Message Text="Name=$(Name)"/>
</Target>
</Project>
Następujące XML definiuje MyApp.proj, którego przywóz MyCommon.targets:
<Project
DefaultTargets="Go"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyApp</Name>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>
Gdy projekt buduje, wyświetlany jest następujący komunikat:
Name="MyCommon"
Ponieważ projekt jest przywożone po właściwość Name w MyApp.proj, definicja zdefiniowano Name w MyCommon.targets zastępuje definicji w MyApp.proj.Jeśli projekt jest przywożony przed zdefiniowane nazwy właściwości, budowanie byłby wyświetlony następujący komunikat:
Name="MyApp"
Użyj następujących podejście podczas importowania projektów
Zdefiniuj w pliku projektu, wszystkie właściwości i elementy, które są używane jako parametry dla właściwości i elementy projektu przywożonych.
Importowanie projektu.
Wszystkie właściwości i elementy projektu przywożonych i elementy, które należy zastąpić domyślne definicji właściwości, należy zdefiniować w pliku projektu.
Przykład
Poniższy przykład kodu pokazuje pliku MyCommon.targets, że przywóz w drugim przykładzie kodu.Plik .targets jest wynikiem właściwości z przywozu projektu, aby skonfigurować budowanie.
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
<Optimize Condition="'$(Flavor)'=='RETAIL'">yes</Optimize>
<appname>$(MSBuildProjectName)</appname>
<PropertyGroup>
<Target Name="Build">
<Csc Sources="hello.cs"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe"/>
</Target>
</Project>
Poniższy przykład kodu importuje plik MyCommon.targets.
<Project DefaultTargets="Build"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor>RETAIL</Flavor>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>