Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können auf alle Buildinfrastrukturen verweisen, die für einen Entwicklungstechnologiestapel wie das .NET SDK erforderlich sind, indem Sie einfach auf eine Reihe von Eigenschaften und Zielen verweisen, die gemeinsam als Projekt-SDK bezeichnet werden, anhand ihrer spezifischen ID. Die ID verweist auf einen bestimmten Satz von .props Dateien, die Eigenschaftsdefinitionen enthalten, und .targets Dateien, die Zieldefinitionen enthalten. Sie verweisen auf ein Projekt-SDK mithilfe des Sdk Attributs auf dem Projektknoten der obersten Ebene.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Während der Auswertung des Projekts fügt MSBuild implizite Importe am oberen und unteren Rand der Projektdatei hinzu:
<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>
Es gibt viele SDKs, die von Microsoft verteilt werden. Das Projekt-SDK, auf das im vorherigen Beispiel verwiesen wird, weist den Moniker Microsoft.NET.Sdkauf. Die Projekt-SDKs, die .NET Core und .NET 5 und höher zugeordnet sind, werden in der Übersicht über .NET Project SDK aufgeführt.
Verweisen auf ein Projekt-SDK
Es gibt drei Möglichkeiten, auf ein Projekt-SDK zu verweisen:
Verwenden des Sdk Attributs für das Project Element
<Project Sdk="My.Custom.Sdk">
...
</Project>
Am Anfang und Ende des Projekts wird ein impliziter Import hinzugefügt, wie zuvor beschrieben.
Um eine bestimmte Version des SDK anzugeben, fügen Sie sie an das Sdk Attribut an:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Verwenden Sie das Element der obersten Ebene Sdk
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Am Anfang und Ende des Projekts wird ein impliziter Import hinzugefügt, wie zuvor beschrieben.
Das Attribut Version ist nicht erforderlich.
Verwenden des Import Elements an einer beliebigen Stelle in Ihrem Projekt
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Wenn Sie die Importe explizit in Ihr Projekt einschließen, haben Sie die volle Kontrolle über die Bestellung.
Bei Verwendung des Import Elements können Sie auch ein optionales Version Attribut angeben. Sie können z.B. <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" /> festlegen.
Warnung
Wenn Sie Ihr Projekt auf Import-Elemente ändern, stellen Sie sicher, dass Sie sowohl Elemente für .props- und .targets-Importe hinzufügen und das SDK aus dem Project-Element und den Sdk-Elementen entfernen. Sollten Sie dies nicht tun, werden Importe dupliziert und eine MSB4011 Warnung ausgegeben.
Wie Projekt-SDKs aufgelöst werden
Beim Auswerten des Imports löst MSBuild den Pfad zum Projekt-SDK basierend auf dem angegebenen Namen und der angegebenen Version dynamisch auf. MSBuild verfügt außerdem über eine Liste registrierter SDK-Resolver, bei denen es sich um Plug-Ins handelt, die Projekt-SDKs auf Ihrem Computer suchen. Zu diesen Plug-Ins gehören:
Ein nuGet-basierter Resolver, der Ihre konfigurierten Paketfeeds für NuGet-Pakete abfragt, die mit der ID und Version des angegebenen SDK übereinstimmen.
Dieser Resolver ist nur aktiv, wenn Sie eine optionale Version angegeben haben. Sie kann für jedes benutzerdefinierte Projekt-SDK verwendet werden.
Ein .NET SDK-Resolver, der MSBuild-SDKs auflöst, die mit dem .NET SDK installiert sind.
Dieser Resolver findet Projekt-SDKs wie
Microsoft.NET.SdkundMicrosoft.NET.Sdk.Web, die Teil des Produkts sind.Ein Standardlöser, der SDKs auflöst, die mit MSBuild installiert wurden.
Der NuGet-basierte SDK-Resolver unterstützt die Angabe einer Version in der global.json-Datei , mit der Sie die Projekt-SDK-Version an einem Ort und nicht in jedem einzelnen Projekt steuern können:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Während eines Builds kann nur eine Version jedes Projekt-SDK verwendet werden. Wenn Sie auf zwei verschiedene Versionen desselben Projekt-SDK verweisen, gibt MSBuild eine Warnung aus. Es wird empfohlen, keine Version in Ihren Projekten anzugeben, wenn eine Version in der global.json Datei angegeben ist.