Korzystanie z zestawów SDK projektu MSBuild
Program MSBuild 15.0 wprowadził koncepcję "zestawu SDK projektu", który upraszcza korzystanie z zestawów programistycznych wymagających zaimportowania właściwości i obiektów docelowych.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Podczas oceny projektu program MSBuild dodaje niejawne importy w górnej i dolnej części pliku projektu:
<Project>
<!-- Implicit top import -->
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
<!-- Implicit bottom import -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
Odwołuje się do zestawu SDK projektu
Istnieją trzy sposoby odwołowania się do zestawu SDK projektu:
Użyj atrybutu Sdk
w elemecie <Project/>
<Project Sdk="My.Custom.Sdk">
...
</Project>
Import niejawny jest dodawany do góry i dolnej części projektu, jak wspomniano wcześniej.
Aby określić określoną wersję zestawu SDK, dołącz go do atrybutu Sdk
:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Korzystanie z elementu najwyższego poziomu <Sdk/>
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Import niejawny jest dodawany do góry i dolnej części projektu, jak wspomniano wcześniej.
Atrybut Version
nie jest wymagany.
Używanie elementu w <Import/>
dowolnym miejscu w projekcie
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Jawne uwzględnienie importu w projekcie umożliwia pełną kontrolę nad kolejnością.
W przypadku korzystania z <Import/>
elementu można również określić opcjonalny Version
atrybut. Można na przykład określić wartość <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Ostrzeżenie
Jeśli zmieniasz projekt w celu używania <Import/>
elementów, upewnij się, że dodasz zestaw .props
SDK i .targets
je importujesz, a zestaw SDK zostanie usunięty z <Project/>
elementu i <Sdk/>
elementów. Nie można tego zrobić, spowoduje dwukrotne zaimportowanie i MSB4011
ostrzeżenie.
Jak są rozwiązywane zestawy SDK projektu
Podczas oceniania importu program MSBuild dynamicznie rozpoznaje ścieżkę do zestawu SDK projektu na podstawie podanej nazwy i wersji. Program MSBuild zawiera również listę zarejestrowanych narzędzi rozpoznawania zestawów SDK, które są wtyczkami, które lokalizują zestawy SDK projektu na maszynie. Te wtyczki obejmują:
Program rozpoznawania pakietów NuGet, który wysyła zapytania do skonfigurowanych źródeł danych pakietów dla pakietów NuGet, które pasują do określonego identyfikatora i wersji zestawu SDK.
Ten program rozpoznawania nazw jest aktywny tylko wtedy, gdy określono opcjonalną wersję. Można go używać dla dowolnego niestandardowego zestawu SDK projektu.
Program rozpoznawania zestawu SDK platformy .NET, który rozwiązuje problemy z zestawami SDK programu MSBuild zainstalowanymi za pomocą zestawu .NET SDK.
Ten program rozpoznawania lokalizuje zestawy SDK projektu, takie jak
Microsoft.NET.Sdk
iMicrosoft.NET.Sdk.Web
które są częścią produktu.Domyślny program rozpoznawania rozpoznawania zestawów SDK zainstalowanych w programie MSBuild.
Narzędzie rozpoznawania zestawu SDK opartego na nuGet obsługuje określanie wersji w pliku global.json , co pozwala kontrolować wersję zestawu SDK projektu w jednym miejscu, a nie w każdym pojedynczym projekcie:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Podczas kompilacji można używać tylko jednej wersji każdego zestawu SDK projektu. Jeśli odwołujesz się do dwóch różnych wersji tego samego zestawu SDK projektu, program MSBuild emituje ostrzeżenie. Zaleca się, aby nie określać wersji w projektach, jeśli wersja jest określona w pliku global.json.
Powiązana zawartość
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla