Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Körningsspecifika appar, eller .NET-appar med ett RuntimeIdentifier, är inte längre fristående som standard. I stället är de ramverksberoende som standard.
Detta är en avgörande förändring i följande situationer:
- Om du har distribuerat, delat eller publicerat appen och inte uttryckligen lagt till egenskapen 
SelfContained, men inte heller kräver att .NET-runtime installeras på datorn för att den ska fungera. I det här fallet kan du ha förlitat dig på det tidigare beteendet för att skapa en fristående app som standard. - Om du förlitar dig på IL Link-verktyget. I det här fallet vidtar du de steg som beskrivs under Rekommenderad åtgärd för att använda IL Link igen.
 
Tidigare beteende
Tidigare, om en körningsidentifierare (RID) angavs (via RuntimeIdentifier), publicerades appen som fristående, även om SelfContained inte uttryckligen angavs.
Dessutom:
- Om 
PublishSelfContainedinte uttryckligen har angetts tillfalse, har publiceringsegenskapernaPublishSingleFileochPublishAotunderförstått enRuntimeIdentifieroch därförSelfContained(om den inte har angetts) under åtgärder somdotnet build,dotnet restoreochdotnet publish. - Egenskapen 
PublishTrimmedinnebar inteSelfContained. - Egenskapen 
PublishReadyToRunantyddeSelfContainedomSelfContainedden inte angavs. 
Nytt beteende
Från och med .NET 8, för appar som är avsedda för .NET 8 eller en senare version, innebär RuntimeIdentifier inte längre SelfContained som standard. Appar som anger en runtime-identifierare är som standard beroende av .NET runtime (ramverksberoende). Appar som riktar in sig på .NET 7 eller tidigare versioner påverkas inte.
Dessutom:
- Om 
PublishSelfContainedinte uttryckligen anges tillfalse, innebär att publiceringsegenskapernaPublishSingleFileochPublishAotuppfattas somSelfContained(ifall det är ospecificerat) endast underdotnet publish(det vill säga, inte fördotnet buildellerdotnet restore). - Egenskapen 
PublishTrimmedinnebärSelfContainednu också underdotnet publish. - Egenskapen 
PublishReadyToRuninnebärSelfContainedinte längre om projektet riktar in sig på .NET 8 eller senare. 
Anmärkning
Om du publicerar med msbuild /t:Publish och vill att din app ska vara fristående, måste du uttryckligen ange SelfContained, även om ditt projekt har någon av de listade publiceringsegenskaper.
Version lanserad
Förhandsversion 5 av .NET 8
Typ av brytande ändring
Den här ändringen kan påverka källkompatibilitet och binär kompatibilitet.
Orsak till ändring
- Det nya .NET SDK-beteendet överensstämmer med Visual Studio-beteendet.
 - Ramverksberoende appar är som standard mindre eftersom det inte finns kopior av .NET som lagras i varje app.
 - När .NET hanteras utanför appen (dvs. för ramverksberoende distributioner) förblir .NET säkrare och up-to-date. Appar som har en egen kopia av körtiden får inte säkerhetsuppdateringar. Den här ändringen gör fler appar ramverksberoende som standard.
 - Helst är kommandoradsalternativ ortoggoniska. I det här fallet stöder verktygen både RID-specifik fristående distribution (SCD) och RID-specifik ramverksberoende distribution (FDD). Så det var inte meningsfullt att inget RID standardiserats som FDD och RID standardiserades som SCD. Det här beteendet var ofta förvirrande för användarna.
 
.NET 6 uppmärksammade användarna på denna breaking change med följande meddelande:
varning NETSDK1179: Ett av alternativen "--self-contained" eller "--no-self-contained" krävs när "--runtime" används.
Nu när kunderna har haft tid att explicit lägga till SelfContained, är det okej att introducera pausen.
Rekommenderad åtgärd
Om du använder .NET 7 eller en tidigare version och förlitade dig på det tidigare beteendet där
SelfContainedantogs, kommer du att få den här varningen:För projekt med TargetFrameworks >= 8.0 ger RuntimeIdentifier inte längre automatiskt en SelfContained-app. Om du vill fortsätta att skapa en oberoende .NET Framework-app efter uppgradering till 8.0 kan du överväga att ange SelfContained explicit.
Följ anvisningarna i varningen och deklarera din app som fristående. Du kan göra det antingen i projektfilen eller som ett kommandoradsargument, till exempel
dotnet publish --self-contained.Om du använder .NET 8 och vill behålla det tidigare beteendet anger du
SelfContainedtilltruepå samma sätt som tidigare beskrivits.
Ange project-file-egenskap
              SelfContained är en MSBuild-egenskap som du kan infoga i projektfilen, som är en fil som har filnamnstillägget .csproj, .vbproj eller .fsproj . Ange egenskapen på följande sätt:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ...
    <SelfContained>true</SelfContained>
  </PropertyGroup>
</Project>