MSBuild proje SDK'larını kullanma
MSBuild 15.0, özelliklerin ve hedeflerin içeri aktarılmasını gerektiren yazılım geliştirme setlerinin kullanılmasını kolaylaştıran "proje SDK'sı" kavramını kullanıma sunulmuştur.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Projenin değerlendirmesi sırasında MSBuild, proje dosyasının üstüne ve altına örtük içeri aktarmalar ekler:
<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>
Proje SDK'sı başvurusu
Proje SDK'sına başvurmanın üç yolu vardır:
öğesinde Sdk
özniteliğini <Project/>
kullanma
<Project Sdk="My.Custom.Sdk">
...
</Project>
Daha önce açıklandığı gibi projenin üstüne ve altına örtük bir içeri aktarma eklenir.
SDK'nın belirli bir sürümünü belirtmek için özniteliğine Sdk
ekleyin:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Üst düzey <Sdk/>
öğeyi kullanma
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Daha önce açıklandığı gibi projenin üstüne ve altına örtük bir içeri aktarma eklenir.
Version
Özniteliği gerekli değildir.
<Import/>
öğesini projenizin herhangi bir yerinde kullanma
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Projenizdeki içeri aktarmaları açıkça dahil etmek, sipariş üzerinde tam denetim sahibi olmanıza olanak tanır.
öğesini kullanırken <Import/>
isteğe bağlı Version
bir öznitelik de belirtebilirsiniz. Örneğin, belirtebilirsiniz <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Uyarı
Projeyi öğeleri kullanacak şekilde <Import/>
değiştiriyorsanız, hem hem .targets
de .props
içeri aktarmaları eklediğinizden ve SDK'yı öğeden ve <Sdk/>
öğelerden kaldırdığınızdan <Project/>
emin olun. Bunun yapılmaması, iki kez içeri aktarma ve uyarıyla MSB4011
sonuçlanır.
Proje SDK'ları nasıl çözümlenir?
İçeri aktarmayı değerlendirirken MSBuild, proje SDK'sının yolunu belirttiğiniz ada ve sürüme göre dinamik olarak çözümler. MSBuild ayrıca makinenizdeki proje SDK'larını bulan eklentiler olan kayıtlı SDK çözümleyicilerinin bir listesine sahiptir. Bu eklentiler şunlardır:
Belirttiğiniz SDK'nın kimliği ve sürümüyle eşleşen NuGet paketleri için yapılandırılmış paket akışlarınızı sorgulayan NuGet tabanlı bir çözümleyici.
Bu çözümleyici yalnızca isteğe bağlı bir sürüm belirttiyseniz etkindir. Herhangi bir özel proje SDK'sı için kullanılabilir.
.NET SDK ile yüklenen MSBuild SDK'larını çözümleyen bir .NET SDK çözümleyicisi.
Bu çözümleyici, ürünün parçası olan ve
Microsoft.NET.Sdk.Web
gibiMicrosoft.NET.Sdk
proje SDK'larını bulur.MSBuild ile yüklenen SDK'ları çözümleyen varsayılan çözümleyici.
NuGet tabanlı SDK çözümleyicisi, global.json dosyasında bir sürüm belirtmeyi destekler ve bu da proje SDK'sı sürümünü her bir proje yerine tek bir yerde denetlemenize olanak tanır:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Derleme sırasında her proje SDK'sının yalnızca bir sürümü kullanılabilir. Aynı proje SDK'sının iki farklı sürümüne başvurursanız, MSBuild bir uyarı yayar. Global.json dosyasında bir sürüm belirtilmişse projelerinizde bir sürüm belirtmemeniz önerilir.
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin