+
+// Configure some logging parameters for WiX
+#define ExitTrace LogErrorString
+#define ExitTrace1 LogErrorString
+#define ExitTrace2 LogErrorString
+#define ExitTrace3 LogErrorString
+
+// Includes from WiX SDK
+#include "dutil.h"
+#include "regutil.h"
+#include "logutil.h"
+#include "pathutil.h"
+#include "strutil.h"
+#include "wiutil.h"
diff --git a/src/finalizer_shim/finalizer_shim.csproj b/src/finalizer_shim/finalizer_shim.csproj
new file mode 100644
index 000000000..ad9af2548
--- /dev/null
+++ b/src/finalizer_shim/finalizer_shim.csproj
@@ -0,0 +1,35 @@
+
+
+
+ $(Architecture)
+ $(CoreSdkTargetFramework)
+ true
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/redist.csproj b/src/redist/redist.csproj
new file mode 100644
index 000000000..c735a1fb8
--- /dev/null
+++ b/src/redist/redist.csproj
@@ -0,0 +1,53 @@
+
+
+ $(CoreSdkTargetFramework)
+ true
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/Badge.targets b/src/redist/targets/Badge.targets
new file mode 100644
index 000000000..e78789026
--- /dev/null
+++ b/src/redist/targets/Badge.targets
@@ -0,0 +1,32 @@
+
+
+
+ $(RepoRoot)/resources/images/version_badge.svg
+
+
+
+
+
+
+
+
+
+
+ $(OSName)_$(Architecture)
+ rhel.6_x64
+ linux_musl_x64
+ linux_$(Architecture)
+ all_linux_distros_native_installer
+
+ $(ArtifactsShippingPackagesDir)$(VersionBadgeMoniker)_$(Configuration)_version_badge.svg
+ $(ArtifactsShippingPackagesDir)$(VersionBadgeMoniker)_$(Configuration)_coherent_badge.svg
+
+
+
diff --git a/src/redist/targets/Branding.targets b/src/redist/targets/Branding.targets
new file mode 100644
index 000000000..6b6e2642b
--- /dev/null
+++ b/src/redist/targets/Branding.targets
@@ -0,0 +1,19 @@
+
+
+
+ cli
+ Microsoft .NET SDK $(Version)
+ Microsoft .NET Toolset $(Version)
+ .NET Standard Support for Visual Studio 2015
+ Microsoft .NET Runtime $(MicrosoftNETCoreAppRuntimePackageVersion)
+ Microsoft .NET Targeting Pack $(MicrosoftNETCoreAppRefPackageVersion)
+ Microsoft .NET Standard 2.1 Targeting Pack $(NETStandardLibraryRefPackageVersion)
+ Microsoft .NET AppHost Pack $(MicrosoftNETCoreAppHostHostPackageVersion)
+ Microsoft .NET Host $(SharedHostVersion)
+ Microsoft .NET Host FX Resolver $(HostFxrVersion)
+ Microsoft.NETCore.App
+ $(SharedFrameworkName)
+
+
+
+
diff --git a/src/redist/targets/BuildCoreSdkTasks.targets b/src/redist/targets/BuildCoreSdkTasks.targets
new file mode 100644
index 000000000..f89f2297f
--- /dev/null
+++ b/src/redist/targets/BuildCoreSdkTasks.targets
@@ -0,0 +1,43 @@
+
+
+
+ $(CoreSdkTargetFramework)
+ net472
+
+ $(ArtifactsDir)tasks\bin\core-sdk-tasks\$(Configuration)\$(TaskTargetFramework)\core-sdk-tasks.dll
+ $(RepoRoot)src\core-sdk-tasks\core-sdk-tasks.csproj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/BundledDotnetTools.targets b/src/redist/targets/BundledDotnetTools.targets
new file mode 100644
index 000000000..2c816393d
--- /dev/null
+++ b/src/redist/targets/BundledDotnetTools.targets
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+ %(Identity)/%(Version)/
+ $(NuGetPackageRoot)$([MSBuild]::ValueOrDefault('%(PackagePathRelativeToPackageRoot)', '').ToLower())/
+ %(Identity)/%(Version)/%(Identity).%(Version).nupkg
+ $(NuGetPackageRoot)$([MSBuild]::ValueOrDefault('%(NupkgPathRelativeToPackageRoot)', '').ToLower())
+
+
+
+
+
+
+
+
+ PackageToRestore=%(BundledDotnetTool.Identity);
+ PackageVersionToRestore=%(BundledDotnetTool.Version);
+ RestoreProjectStyle=DotnetToolReference;
+ TargetFramework=$(TargetFramework);
+ LayoutFolder=$(SdkOutputDirectory)DotnetTools/
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/BundledManifests.targets b/src/redist/targets/BundledManifests.targets
new file mode 100644
index 000000000..3f8f9ea42
--- /dev/null
+++ b/src/redist/targets/BundledManifests.targets
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+ $(Architecture)
+
+
+
+ %(Identity).Manifest-%(FeatureBand)
+ %(Identity).Manifest-%(FeatureBand).Msi.$(MsiArchitectureForWorkloadManifests)
+ $(NuGetPackageRoot)$([MSBuild]::ValueOrDefault('%(NupkgId)', '').ToLower())/$([MSBuild]::ValueOrDefault('%(Version)', '').ToLower())
+ $(NuGetPackageRoot)$([MSBuild]::ValueOrDefault('%(MsiNupkgId)', '').ToLower())/$([MSBuild]::ValueOrDefault('%(Version)', '').ToLower())
+ $([MSBuild]::NormalizePath('%(RestoredMsiNupkgContentPath)/data/%(NupkgId).%(Version)-$(MsiArchitectureForWorkloadManifests).msi'))
+
+
+
+
+
+
+ [%(Version)]
+
+
+
+
+
+ [%(Version)]
+
+
+
+
+
+
+
+
+ $(PkgMicrosoft_DotNet_SignCheck)\tools\Microsoft.DotNet.SignCheck.exe
+ $(ArtifactsLogDir)\workloadmanifestsigncheck.log
+ $(ArtifactsLogDir)\workloadmanifestsigncheck.errors.log
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/BundledTemplates.targets b/src/redist/targets/BundledTemplates.targets
new file mode 100644
index 000000000..f0a94502e
--- /dev/null
+++ b/src/redist/targets/BundledTemplates.targets
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+ $(ArtifactsNonShippingPackagesDir)%(TemplatesComponents.TemplateBaseFilename)-$(FullNugetVersion)-$(ProductMonikerRid)$(InstallerExtension)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %(Identity)/%(PackageVersion)/%(Identity).%(PackageVersion).nupkg
+ $(NuGetPackageRoot)$([MSBuild]::ValueOrDefault('%(NupkgPathRelativeToPackageRoot)', '').ToLower())
+
+
+
+
+
+
+
+
+
+
+
+
+ $(TargetFramework)
+
+
+ @(BundledTemplatePackageDownload->'', '
+ ')
+
+
+]]>
+
+
+ $(TemplatePackageDownloadProjectContent.Replace(';', '%3B'))
+ $(IntermediateOutputPath)TemplatePackageDownloader\
+ $(TemplatePackageDownloadProjectDirectory)TemplatePackageDownloader.csproj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/Checksum.targets b/src/redist/targets/Checksum.targets
new file mode 100644
index 000000000..0e2790a9b
--- /dev/null
+++ b/src/redist/targets/Checksum.targets
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %(ArtifactsForGeneratingChecksums.Identity).sha
+
+
+
+
diff --git a/src/redist/targets/Crossgen.targets b/src/redist/targets/Crossgen.targets
new file mode 100644
index 000000000..a59ed388f
--- /dev/null
+++ b/src/redist/targets/Crossgen.targets
@@ -0,0 +1,175 @@
+
+
+
+
+
+ microsoft.netcore.app.runtime.$(SharedFrameworkRid)
+ microsoft.netcore.app.crossgen2.$(Crossgen2Rid)
+ $(NuGetPackageRoot)/$(RuntimeNETCrossgenPackageName)/$(MicrosoftNETCoreAppRuntimePackageVersion)/tools/crossgen2$(ExeExtension)
+
+ $(RedistLayoutPath)shared/$(SharedFrameworkName)/$(MicrosoftNETCoreAppRuntimePackageVersion)
+ $(RedistLayoutPath)shared/$(SharedFrameworkName)/$(VSRedistCommonNetCoreSharedFrameworkx6460PackageVersion)
+
+
+
+
+
+
+ PackageToRestore=$(RuntimeNETCrossgenPackageName);
+ PackageVersionToRestore=$(MicrosoftNETCoreAppRuntimePackageVersion);
+ TargetFramework=$(TargetFramework)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/DownloadPackage.csproj b/src/redist/targets/DownloadPackage.csproj
new file mode 100644
index 000000000..41f96901e
--- /dev/null
+++ b/src/redist/targets/DownloadPackage.csproj
@@ -0,0 +1,20 @@
+
+
+
+
+ Library
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/FileExtensions.targets b/src/redist/targets/FileExtensions.targets
new file mode 100644
index 000000000..d26916750
--- /dev/null
+++ b/src/redist/targets/FileExtensions.targets
@@ -0,0 +1,32 @@
+
+
+
+ .tar.gz
+ .zip
+
+ .msi
+ .pkg
+ .deb
+ .rpm
+
+ .exe
+ $(InstallerExtension)
+ $(InstallerExtension)
+ $(InstallerExtension)
+
+ lib
+
+
+ .so
+ .dll
+ .dylib
+
+ .exe
+
+
+ .sh
+ .ps1
+
+
+
+
diff --git a/src/redist/targets/GenerateArchives.targets b/src/redist/targets/GenerateArchives.targets
new file mode 100644
index 000000000..814abbe71
--- /dev/null
+++ b/src/redist/targets/GenerateArchives.targets
@@ -0,0 +1,44 @@
+
+
+
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/GenerateBundledVersions.targets b/src/redist/targets/GenerateBundledVersions.targets
new file mode 100644
index 000000000..81d3f3ef5
--- /dev/null
+++ b/src/redist/targets/GenerateBundledVersions.targets
@@ -0,0 +1,753 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+ 32
+ 17
+
+
+
+
+ Microsoft.NETCoreSdk.BundledVersions.props
+
+
+
+ <_NETCoreAppPackageVersion>$(MicrosoftNETCoreAppRuntimePackageVersion)
+ <_NETStandardLibraryPackageVersion>$(NETStandardLibraryRefPackageVersion)
+ <_NETCorePlatformsPackageVersion>$(MicrosoftNETCorePlatformsPackageVersion)
+
+ <_NET50RuntimePackVersion>5.0.$(VersionFeature50)
+ <_NET50TargetingPackVersion>5.0.0
+ <_WindowsDesktop50RuntimePackVersion>5.0.$(VersionFeature50)
+ <_WindowsDesktop50TargetingPackVersion>5.0.0
+ <_AspNet50RuntimePackVersion>5.0.$(VersionFeature50)
+ <_AspNet50TargetingPackVersion>5.0.0
+
+ <_NETCoreApp30RuntimePackVersion>3.0.3
+ <_NETCoreApp30TargetingPackVersion>3.0.0
+
+ <_NETCoreApp31RuntimePackVersion>3.1.$(VersionFeature31)
+ <_NETCoreApp31TargetingPackVersion>3.1.0
+
+ <_WindowsDesktop30RuntimePackVersion>3.0.3
+ <_WindowsDesktop30TargetingPackVersion>3.0.0
+
+ <_WindowsDesktop31RuntimePackVersion>3.1.$(VersionFeature31)
+ <_WindowsDesktop31TargetingPackVersion>3.1.0
+
+ <_AspNet30RuntimePackVersion>3.0.3
+ <_AspNet30TargetingPackVersion>3.0.1
+
+ <_AspNet31RuntimePackVersion>3.1.$(VersionFeature31)
+ <_AspNet31TargetingPackVersion>3.1.10
+
+
+ <_NETCoreAppTargetFrameworkVersion>$(_NETCoreAppPackageVersion.Split('.')[0]).$(_NETCoreAppPackageVersion.Split('.')[1])
+ <_NETStandardTargetFrameworkVersion>$(_NETStandardLibraryPackageVersion.Split('.')[0]).$(_NETStandardLibraryPackageVersion.Split('.')[1])
+
+ <_NETCoreSdkBeingBuiltIsPreview Condition=" '$(DotNetFinalVersionKind)' != 'release' ">true
+ <_NETCoreSdkBeingBuiltIsPreview Condition=" '$(DotNetFinalVersionKind)' == 'release' ">false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(ProductMonikerRid)
+
+
+
+
+
+
+
+
+ %24([MSBuild]::NormalizePath('%24(MSBuildThisFileDirectory)..\..\'))
+ %24([MSBuild]::EnsureTrailingSlash('%24(NetCoreRoot)'))packs
+
+ $(_NETCoreAppTargetFrameworkVersion)
+ $(_NETCoreAppTargetFrameworkVersion)
+ $(_NETCoreAppPackageVersion)
+ $(_NETStandardTargetFrameworkVersion)
+ $(_NETStandardLibraryPackageVersion)
+ $(_NETCorePlatformsPackageVersion)
+ %24(MSBuildThisFileDirectory)RuntimeIdentifierGraph.json
+ $(Version)
+ $(ProductMonikerRid)
+ $(PortableProductMonikerRid)
+ <_NETCoreSdkIsPreview>$(_NETCoreSdkBeingBuiltIsPreview)
+
+
+ @(ImplicitPackageVariable->'', '
+ ')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+ Microsoft.NETCoreSdk.BundledCliTools.props
+
+
+
+
+
+
+
+@(BundledDotnetTools->HasMetadata('ObsoletesCliTool')->' %3CBundledDotNetCliToolReference Include="%(ObsoletesCliTool)" /%3E','%0A')
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/GenerateDebs.targets b/src/redist/targets/GenerateDebs.targets
new file mode 100644
index 000000000..f0e7e5d14
--- /dev/null
+++ b/src/redist/targets/GenerateDebs.targets
@@ -0,0 +1,447 @@
+
+
+
+
+ $(PkgMicrosoft_DotNet_Build_Tasks_Installers)/build/deb-package-tool
+
+
+
+
+ $(MSBuildProjectDirectory)
+
+
+
+
+ /usr/share/dotnet
+
+ package_root
+ $
+ samples
+ docs
+ debian
+
+
+
+
+ $(MicrosoftNETCoreAppMajorMinorVersion)
+ dotnet-runtime-deps-$(RuntimeDepsPackageVersion)
+ $(DownloadsFolder)$(DownloadedRuntimeDepsInstallerFileName)
+ $(MajorMinorVersion)
+ dotnet-sdk-$(SdkDebianPackageVersion)
+ $(MicrosoftNETCoreAppPackageVersion)
+ $(MicrosoftNETCoreAppMajorMinorVersion)
+ dotnet-runtime-$(SharedFxDebianPackageFileVersion)
+ $(SharedFxDebianPackageFileName.ToLower())
+ dotnet-runtime-$(SharedFxDebianPackageVersion)
+ $(SharedFxDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedSharedFrameworkInstallerFileName)
+ dotnet-targeting-pack-$(SharedFxDebianPackageFileVersion)
+ $(NetCoreAppTargetingPackDebianPackageFileName.ToLower())
+ dotnet-targeting-pack-$(SharedFxDebianPackageVersion)
+ $(NetCoreAppTargetingPackDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedNetCoreAppTargetingPackInstallerFileName)
+ netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion)
+ $(NetStandardTargetingPackDebianPackageFileName.ToLower())
+ netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion.Split('.')[0]).$(NETStandardLibraryRefPackageVersion.Split('.')[1])
+ $(NetStandardTargetingPackDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedNetStandardTargetingPackInstallerFileName)
+ dotnet-apphost-pack-$(SharedFxDebianPackageFileVersion)
+ $(NetCoreAppHostPackDebianPackageFileName.ToLower())
+ dotnet-apphost-pack-$(SharedFxDebianPackageVersion)
+ $(NetCoreAppHostPackDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedNetCoreAppHostPackInstallerFileName)
+ dotnet-hostfxr-$(HostFxrVersion)
+ $(HostFxrDebianPackageFileName.ToLower())
+ dotnet-hostfxr-$(HostFxrMajorMinorVersion)
+ $(HostFxrDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedHostFxrInstallerFileName)
+ dotnet-host
+ $(DownloadsFolder)$(DownloadedSharedHostInstallerFileName)
+ aspnetcore-runtime-$(MicrosoftAspNetCoreAppRuntimePackageVersion)
+ $(AspNetCoreSharedFxDebianPackageFileName.ToLower())
+ aspnetcore-runtime-$(AspNetCoreMajorMinorVersion)
+ $(AspNetCoreSharedFxDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedAspNetCoreSharedFxInstallerFileName)
+ aspnetcore-targeting-pack-$(MicrosoftAspNetCoreAppRefPackageVersion)
+ $(AspNetTargetingPackDebianPackageFileName.ToLower())
+ aspnetcore-targeting-pack-$(AspNetCoreMajorMinorVersion)
+ $(AspNetTargetingPackDebianPackageName.ToLower())
+ $(DownloadsFolder)$(DownloadedAspNetTargetingPackInstallerFileName)
+
+
+
+
+
+ $(RepoRoot)Documentation/manpages
+ $(RepoRoot)test/EndToEnd/EndToEnd.Tests.csproj
+ $(RedistLayoutPath)sdk/
+ $(RedistLayoutPath)templates/
+
+
+
+
+
+
+
+
+
+
+
+ $(ArtifactsShippingPackagesDir)
+ $(InstallerOutputDirectory)$(DistroSpecificArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension)
+ $(IntermediateOutputPath)debian/sdk/
+ $(SdkDebianIntermediateDirectory)deb-tool-output
+ $(SdkDebianIntermediateDirectory)debian-testResults.xml
+
+
+
+
+ $(SdkDebianIntermediateDirectory)debianLayoutDirectory/
+ $(LayoutDirectory)$(LayoutPackageRootDirName)
+ $(LayoutDirectory)$(LayoutAbsolutePlacementDirName)
+ $(LayoutDirectory)$(LayoutSamplesDirName)
+ $(LayoutDirectory)$(LayoutDocsDirName)
+ $(LayoutDirectory)$(LayoutDebianFilesDirName)
+
+
+
+
+ $(MSBuildThisFileDirectory)packaging/deb/dotnet-debian_config.json
+ $(LayoutDirectory)debian_config.json
+
+
+
+ $(MSBuildThisFileDirectory)packaging/deb/postinst
+ $(LayoutDirectory)debian/postinst
+
+
+
+
+ $(SharedFxDebianPackageName)
+
+
+ $(AspNetCoreSharedFxDebianPackageName)
+
+
+ $(NetCoreAppTargetingPackDebianPackageName)
+
+
+ $(NetCoreAppHostPackDebianPackageName)
+
+
+ $(NetStandardTargetingPackDebianPackageName)
+
+
+ $(AspNetTargetingPackDebianPackageName)
+
+
+
+ ,
+ "$(AdditionalSharedFxDebianPackageName)" : {}
+
+
+
+
+
+
+ $(MajorMinorVersion)
+
+
+ $(SdkBrandName)
+
+
+ $(MicrosoftNETCoreAppRuntimePackageVersionWithTilde)
+
+
+ $(MicrosoftNETCoreAppRefPackageVersionWithTilde)
+
+
+ $(NetStandardTargetingPackPackageVersionWithTilde)
+
+
+ $(AspNetCoreRuntimeVersionWithTilde)
+
+
+ $(AspNetCoreRefVersionWithTilde)
+
+
+ $(Version)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(AspNetCoreSharedFxBaseRuntimeVersion.IndexOf('-'))
+ $(AspNetCoreSharedFxBaseRuntimeVersion)
+ $(AspNetCoreSharedFxBaseRuntimeVersion.Substring(0, $(AspNetVersionPrereleaseSeparator)))
+
+ $(AspNetSimpleVersion.LastIndexOf('.'))
+ $(AspNetSimpleVersion.Substring(0, $(AspNetVersionPatchSeparator)))
+
+
+ --ignore-depends=dotnet-runtime-$(AspNetSimpleVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
diff --git a/src/redist/targets/GenerateInstallers.targets b/src/redist/targets/GenerateInstallers.targets
new file mode 100644
index 000000000..b98fcc9d1
--- /dev/null
+++ b/src/redist/targets/GenerateInstallers.targets
@@ -0,0 +1,17 @@
+
+
+
+ <_BuildUnlessNoBuild Condition="'$(NoBuild)' != 'true'">Build
+
+
+
+
diff --git a/src/redist/targets/GenerateLayout.targets b/src/redist/targets/GenerateLayout.targets
new file mode 100644
index 000000000..ce5e09b69
--- /dev/null
+++ b/src/redist/targets/GenerateLayout.targets
@@ -0,0 +1,587 @@
+
+
+ $(BaseOutputPath)$(Configuration)\dotnet\
+ $(BaseOutputPath)$(Configuration)\dotnet-internal\
+ $(IntermediateOutputPath)downloads\
+
+
+
+
+
+ $(VSRedistCommonAspNetCoreSharedFrameworkx6460PackageVersion)
+ $(MicrosoftAspNetCoreAppRuntimePackageVersion)
+
+ $(VSRedistCommonNetCoreSharedFrameworkx6460PackageVersion)
+ $(MicrosoftNETCoreAppRuntimePackageVersion)
+
+ $(VSRedistCommonWindowsDesktopSharedFrameworkx6460PackageVersion)
+
+
+
+ $(VSRedistCommonNetCoreTargetingPackx6460PackageVersion)
+
+ $(MicrosoftAspNetCoreAppRefInternalPackageVersion)
+ $(VSRedistCommonWindowsDesktopTargetingPackx6460PackageVersion)
+ 3.0.0
+
+
+
+
+ $(RedistLayoutPath)sdk\$(Version)\
+
+ true
+ https://dotnetbuilds.blob.core.windows.net/internal/
+
+ https://dotnetcli.blob.core.windows.net/dotnet/
+
+ $(HostRid)
+ $(OSName)-$(Architecture)
+
+
+ -internal
+
+
+
+
+ $(CoreSetupRid)
+ $(InstallerTargetArchitecture)
+
+
+ $(CoreSetupRid)
+ $(Architecture)
+ $(OSName)-$(InstallerTargetArchitecture)
+ rhel.7-aarch64
+
+ x64
+ x86
+ dotnet-host$(InstallerStartSuffix)-$(SharedHostVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-hostfxr$(InstallerStartSuffix)-$(HostFxrVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-runtime$(InstallerStartSuffix)-$(MicrosoftNETCoreAppRuntimePackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-runtime$(InstallerStartSuffix)$(PgoTerm)-$(VSRedistCommonNetCoreSharedFrameworkx6460PackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-runtime-deps-$(SharedHostVersion)-$(RuntimeDepsInstallerFileRid)$(InstallerExtension)
+ windowsdesktop-runtime-$(MicrosoftWindowsDesktopAppRuntimePackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-targeting-pack-$(MicrosoftNETCoreAppRefPackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-apphost-pack-$(MicrosoftNETCoreAppHostPackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ dotnet-apphost-pack-$(MicrosoftNETCoreAppHostPackageVersion)-$(SharedFrameworkInstallerFileRid)_$(AlternateArchitecture)$(InstallerExtension)
+ dotnet-apphost-pack-$(MicrosoftNETCoreAppHostPackageVersion)-$(SharedFrameworkInstallerFileRid)_arm$(InstallerExtension)
+ dotnet-apphost-pack-$(MicrosoftNETCoreAppHostPackageVersion)-$(SharedFrameworkInstallerFileRid)_arm64$(InstallerExtension)
+ windowsdesktop-targeting-pack-$(MicrosoftWindowsDesktopAppRefPackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+ netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion)-$(SharedFrameworkInstallerFileRid)$(InstallerExtension)
+
+ netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion)-osx-x64$(InstallerExtension)
+ netstandard$(NETStandardLibraryRefPackageVersion.Split('.')[0])$(NETStandardLibraryRefPackageVersion.Split('.')[1])
+
+
+ $(CoreSetupRid)
+ $(ProductMonikerRid)
+ linux-$(Architecture)
+ dotnet-runtime-$(MicrosoftNETCoreAppRuntimePackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension)
+ dotnet-runtime$(PgoTerm)-$(VSRedistCommonNetCoreSharedFrameworkx6460PackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension)
+ windowsdesktop-runtime-$(MicrosoftWindowsDesktopAppRuntimePackageVersion)-$(SharedFrameworkRid)$(ArchiveExtension)
+
+ $(HostOSName)-$(BuildArchitecture)
+ $(SharedFrameworkRid)
+
+ $(SharedFrameworkRid)
+ linux-x64
+ $(AspNetCoreInstallerRid)
+ x64
+ aarch64
+
+ aspnetcore-runtime-$(MicrosoftAspNetCoreAppRuntimePackageVersion)-$(AspNetCoreInstallerRid)$(InstallerExtension)
+ aspnetcore-runtime-$(VSRedistCommonAspNetCoreSharedFrameworkx6460PackageVersion)-$(AspNetCoreInstallerRid)$(InstallerExtension)
+
+ aspnetcore-runtime-internal-$(MicrosoftAspNetCoreAppRuntimePackageVersion)-$(AspNetCoreInstallerRid).wixlib
+ aspnetcore-targeting-pack-$(MicrosoftAspNetCoreAppRefPackageVersion)-$(AspNetCoreInstallerRid)$(InstallerExtension)
+ aspnetcore-targeting-pack-$(MicrosoftAspNetCoreAppRefInternalPackageVersion)-$(AspNetCoreInstallerRid)$(InstallerExtension)
+ aspnetcoremodule_$(Architecture)_en_v2_$(MicrosoftAspNetCoreAppRuntimePackageVersion)$(InstallerExtension)
+ aspnetcore-targeting-pack-$(MicrosoftAspNetCoreAppRefPackageVersion)-$(AspNetCoreArchiveRid)$(ArchiveExtension)
+ aspnetcore-runtime-internal-$(MicrosoftAspNetCoreAppRuntimePackageVersion)-$(AspNetCoreArchiveRid)$(ArchiveExtension)
+
+
+ aspnetcore_base_runtime.version
+
+
+
+ $(PublicBaseURL)Runtime/
+ $(PublicBaseURL)
+ $(PublicBaseURL)aspnetcore/Runtime/
+ $(PublicBaseURL)
+ $(PublicBaseURL)WindowsDesktop/
+ $(IntermediateDirectory)/coreSetupDownload/$(MicrosoftNETCoreAppRuntimePackageVersion)
+ $(CoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive$(ArchiveExtension)
+
+
+
+ win-$(AlternateArchitecture)
+ win-arm
+ win-arm64
+
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(CoreSetupRootUrl)
+ $(CombinedFrameworkHostArchiveFileName)
+
+
+
+
+ Microsoft.NETCore.App.Ref
+ $(MicrosoftNETCoreAppRefPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ NETStandard.Library.Ref
+ $(NETStandardLibraryRefPackageVersion)
+ $(NetStandardTargetingPackTargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ Microsoft.AspNetCore.App.Ref
+ $(MicrosoftAspNetCoreAppRefPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ Microsoft.NETCore.App.Host.$(SharedFrameworkRid)
+ $(MicrosoftNETCoreAppHostPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ Microsoft.NETCore.App.Host.$(AlternateAppHostRid)
+ $(MicrosoftNETCoreAppHostPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ Microsoft.NETCore.App.Host.$(ArmAppHostRid)
+ $(MicrosoftNETCoreAppHostPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ Microsoft.NETCore.App.Host.$(Arm64AppHostRid)
+ $(MicrosoftNETCoreAppHostPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedRuntimeDepsInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedSharedFrameworkInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedSharedHostInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedHostFxrInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(NETCoreAppTargetingPackBlobVersion)
+ $(DownloadedNetCoreAppTargetingPackInstallerFileName)
+
+
+
+
+ $(CoreSetupRootUrl)$(NETCoreAppTargetingPackBlobVersion)
+ $(CoreSetupRootUrl)3.0.0
+ $(DownloadedNetStandardTargetingPackInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedNetCoreAppHostPackInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedAlternateNetCoreAppHostPackInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedArmNetCoreAppHostPackInstallerFileName)
+
+
+
+ $(CoreSetupRootUrl)$(CoreSetupBlobVersion)
+ $(DownloadedArm64NetCoreAppHostPackInstallerFileName)
+
+
+
+ $(WinFormsAndWpfSharedFxRootUrl)$(WindowsDesktopTargetingPackBlobVersion)
+ $(DownloadedWindowsDesktopTargetingPackInstallerFileName)
+
+
+
+ $(PublicBaseURL)Sdk/$(MicrosoftDotnetToolsetInternalPackageVersion)
+ $(PublicBaseURL)
+ dotnet-toolset-internal-$(MicrosoftDotnetToolsetInternalPackageVersion).zip
+ sdk/$(Version)
+
+
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)
+ $(AspNetCoreSharedFxRootUrl)
+ $(AspNetCoreSharedFxArchiveFileName)
+
+
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreTargetingPackBlobVersion)
+ $(AspNetTargetingPackArchiveFileName)
+
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreTargetingPackBlobVersion)
+ $(DownloadedAspNetTargetingPackInstallerFileName)
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)
+ $(DownloadedAspNetCoreSharedFxInstallerFileName)
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)
+ $(DownloadedAspNetCoreSharedFxWixLibFileName)
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)
+ $(DownloadedAspNetCoreV2ModuleInstallerFileName)
+
+
+
+ $(AspNetCoreSharedFxRootUrl)$(AspNetCoreBlobVersion)
+ $(AspNetCoreSharedFxRootUrl)
+ $(AspNetCoreSharedFxBaseRuntimeVersionFileName)
+
+
+
+
+ false
+ true
+ false
+
+
+
+
+ Microsoft.WindowsDesktop.App.Ref
+ $(MicrosoftWindowsDesktopAppRefPackageVersion)
+ $(TargetFramework)
+ packs/%(PackageName)/%(PackageVersion)
+
+
+
+ $(WinFormsAndWpfSharedFxRootUrl)$(WindowsDesktopBlobVersion)
+ $(WinFormsAndWpfSharedFxArchiveFileName)
+
+
+
+ $(WinFormsAndWpfSharedFxRootUrl)$(WindowsDesktopBlobVersion)
+ $(DownloadedWinFormsAndWpfSharedFrameworkInstallerFileName)
+
+
+
+
+
+
+
+
+ $(DownloadsFolder)%(DownloadFileName)
+
+
+ $(DownloadsFolder)%(DownloadFileName)
+
+
+ true
+
+
+ %(BaseUrl)
+ $([System.String]::new('%(ComponentToDownload.PrivateBaseUrl)').Replace('$(PublicBaseURL)', '$(InternalBaseURL)'))
+
+
+
+
+
+ %(ComponentToDownload.ShouldDownload)
+ %(ComponentToDownload.DownloadDestination)
+
+
+ %(ComponentToDownload.ShouldDownload)
+ %(ComponentToDownload.DownloadDestination)
+
+
+ %(ComponentToDownload.ShouldDownload)
+ %(ComponentToDownload.DownloadDestination)
+ $(DotNetRuntimeSourceFeedKey)
+
+
+ %(ComponentToDownload.ShouldDownload)
+ %(ComponentToDownload.DownloadDestination)
+ $(dotnetbuilds-internal-container-read-token-base64)
+
+
+
+
+
+
+
+
+ PackageToRestore=%(BundledLayoutPackage.PackageName);
+ PackageVersionToRestore=%(BundledLayoutPackage.PackageVersion);
+ TargetFramework=%(BundledLayoutPackage.TargetFramework);
+ LayoutPackageDescription=%(BundledLayoutPackage.Identity)
+
+
+
+
+
+
+
+
+
+
+ $([MSBuild]::ValueOrDefault('%(BundledLayoutPackage.PackageName)', '').ToLower())
+
+
+
+ %(BundledLayoutPackage.RelativeLayoutPath)
+ %(BundledLayoutPackage.Identity)
+
+
+
+
+
+
+
+ %(BundledLayoutPackageDownloadFiles.RecursiveDir)%(BundledLayoutPackageDownloadFiles.Filename)%(BundledLayoutPackageDownloadFiles.Extension)
+
+
+ $(RedistLayoutPath)/%(BundledLayoutPackageDownloadFiles.RelativeLayoutPath)/%(BundledLayoutPackageDownloadFiles.DestinationPath)
+
+
+ $([MSBuild]::NormalizePath(%(BundledLayoutPackageDownloadFiles.DestinationPath)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Microsoft.NETCore.App.Host.$(SharedFrameworkRid)
+ $(IntermediateOutputPath)AppHostRestore\
+ $(SdkOutputDirectory)AppHostTemplate
+
+
+
+
+
+
+
+
+ PackageToRestore=$(NETCoreAppHostPackageName);
+ PackageVersionToRestore=$(MicrosoftNETCoreAppHostPackageVersion);
+ TargetFramework=$(TargetFramework);
+ RestorePackagesPath=$(AppHostRestorePath);
+ RuntimeIdentifier=$(Rid)
+
+
+
+
+
+
+
+
+ AppHost$(ExeExtension)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/GenerateMSBuildExtensions.targets b/src/redist/targets/GenerateMSBuildExtensions.targets
new file mode 100644
index 000000000..38bf5c09c
--- /dev/null
+++ b/src/redist/targets/GenerateMSBuildExtensions.targets
@@ -0,0 +1,54 @@
+
+
+ $(BaseOutputPath)$(Configuration)\MSBuildExtensionsLayout\
+
+ Microsoft.NET.Build.Extensions
+ $(NuGetPackageRoot)$(MSBuildExtensionsPackageName.ToLower())/$(MicrosoftNETBuildExtensionsPackageVersion.ToLower())
+
+ NETStandard.Library.NETFramework
+ $(NuGetPackageRoot)$(NETStandardLibraryNETFrameworkPackageName.ToLower())/$(CLI_NETStandardLibraryNETFrameworkVersion.ToLower())
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildExtensionsLayoutDirectory)/%(VSMSBuildExtensionsContent.DeploymentSubpath)%(RecursiveDir)%(Filename)%(Extension)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/redist/targets/GenerateMSIs.targets b/src/redist/targets/GenerateMSIs.targets
new file mode 100644
index 000000000..3300b2e28
--- /dev/null
+++ b/src/redist/targets/GenerateMSIs.targets
@@ -0,0 +1,539 @@
+
+
+
+ netcoreapp3.1
+ net6.0
+ net6.0
+ net472
+ $(NuGetPackageRoot)microsoft.dotnet.build.tasks.installers\$(MicrosoftDotNetBuildTasksInstallersPackageVersion)\tools\$(MicrosoftDotNetBuildTasksInstallersTaskTargetFramework)\Microsoft.DotNet.Build.Tasks.Installers.dll
+
+
+
+
+
+
+
+ https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/wix/Microsoft.Signed.Wix-$(WixVersion).zip
+ $(ArtifactsDir)Tools/WixTools/$(WixVersion)
+ $(WixRoot)/WixTools.$(WixVersion).zip
+ $(WixRoot)/WixDownload.$(WixVersion).sentinel
+
+
+
+
+ $(ArtifactsTmpDir)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)-engine.exe
+
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/generatemsi.ps1
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/generatesdkplaceholdermsi.ps1
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/stablefileidforapphosttransform.xslt
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/generatebundle.ps1
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/generatenupkg.ps1
+
+ $(ArtifactsDir)bin/finalizer/$(Architecture)/$(Configuration)/bin/finalizer.exe
+
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Redist.Common.NetCore.Toolset.nuspec
+ $(ArtifactsNonShippingPackagesDir)VS.Redist.Common.NetCore.Toolset.$(Architecture).$(FullNugetVersion).nupkg
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Redist.Common.NetCore.SdkPlaceholder.nuspec
+ $(ArtifactsNonShippingPackagesDir)VS.Redist.Common.NetCore.SdkPlaceholder.$(Architecture).$(FullNugetVersion).nupkg
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Tools.Net.Core.SDK.nuspec
+ $(ArtifactsNonShippingPackagesDir)VS.Tools.Net.Core.SDK.$(Architecture).$(FullNugetVersion).nupkg
+
+ $(ArtifactsDir)bin/SdkResolver/$(Configuration)
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.nuspec
+ $(ArtifactsNonShippingPackagesDir)VS.Tools.Net.Core.SDK.Resolver.nupkg
+
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.nuspec
+ $(ArtifactsNonShippingPackagesDir)VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.$(FullNugetVersion).nupkg
+ $(ArtifactsNonShippingPackagesDir)VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.swr
+
+ $(ArtifactsDir)bin/VSTemplateLocator/Debug
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.nuspec
+ $(ArtifactsNonShippingPackagesDir)VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.$(FullNugetVersion).nupkg
+
+
+ $(ArtifactsObjDir)/LightCommandPackages
+
+ $(ArtifactsNonShippingPackagesDir)
+
+
+
+ $(ArtifactsNonShippingPackagesDir)$(ArtifactNameWithVersionSdk)$(InstallerExtension)
+ Dotnet_CLI
+ $(ArtifactsNonShippingPackagesDir)dotnet-sdkplaceholder-$(FullNugetVersion)-$(ProductMonikerRid)$(InstallerExtension)
+ NetCore_SdkPlaceholder
+ $(ArtifactsShippingPackagesDir)$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(BundleExtension)
+ $(ProductBandCombinedHostHostFxrFrameworkSdkName)
+
+
+
+
+
+
+
+
+
+
+
+ $(GitCommitCount.PadLeft(6,'0'))
+
+
+ $(_PatchNumber)
+
+ $(GitCommitCount)
+
+
+ $(FileVersion)
+
+ $(VersionPrefix).$(CombinedBuildNumberAndRevision)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/generatetemplatesmsi.ps1
+
+
+
+
+ $(BaseOutputPath)$(Configuration)\templates-%(TemplatesComponents.TemplatesMajorMinorVersion)
+ %(TemplatesComponents.BrandNameWithoutVersion) $(Version)
+ %(TemplatesComponents.MSIVersion)
+ %(TemplatesComponents.InstallerUpgradeCode)
+ NetCore_Templates_%(TemplatesComponents.TemplatesMajorMinorVersion)
+
+
+
+
+
+
+ $(IntermediateOutputPath)WorkloadManifests.wxs
+
+
+
+
+
+
+ @(BundledManifests->'
+
+ ', '
+ ')
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @(LatestTemplateInstallerComponent->'%(MSIInstallerFile)')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildThisFileDirectory)packaging/windows/clisdk/VS.Redist.Common.NetCore.Templates.nuspec
+
+
+
+
+ $(ArtifactsNonShippingPackagesDir)VS.Redist.Common.NetCore.Templates.%(TemplatesMajorMinorVersion).$(FullNugetVersion).nupkg
+ %(TemplatesMajorMinorVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/GeneratePKG.targets b/src/redist/targets/GeneratePKG.targets
new file mode 100644
index 000000000..39a79152d
--- /dev/null
+++ b/src/redist/targets/GeneratePKG.targets
@@ -0,0 +1,240 @@
+
+
+
+ $(IntermediateOutputPath)pkgs/$(Version)
+
+
+ com.microsoft.dotnet.sharedhost.$(SharedHostVersion).component.osx.$(Architecture)
+ com.microsoft.dotnet.hostfxr.$(HostFxrVersion).component.osx.$(Architecture)
+ com.microsoft.dotnet.sharedframework.$(SharedFrameworkNugetName).$(MicrosoftNETCoreAppPackageVersion).component.osx.$(Architecture)
+ com.microsoft.dotnet.pack.targeting.$(MicrosoftNETCoreAppRefPackageVersion).component.osx.$(Architecture)
+ com.microsoft.dotnet.pack.apphost.$(MicrosoftNETCoreAppHostPackageVersion).component.osx.$(Architecture)
+ com.microsoft.standard.pack.targeting.$(NETStandardLibraryRefPackageVersion).component.osx.$(Architecture)
+ com.microsoft.dotnet.dev.$(Version).component.osx.$(Architecture)
+ com.microsoft.dotnet.dev.$(Version).osx.$(Architecture)
+
+ /usr/local/share/dotnet
+ /usr/local/share/dotnet/x64
+
+ $(MSBuildThisFileDirectory)packaging/osx/clisdk
+ $(SdkPkgSourcesRootDirectory)/scripts
+ $(SdkPkgScriptsDirectory)/postinstall
+ $(PkgIntermediateDirectory)/scripts
+ $(SdkPkgDestinationScriptsDirectory)/postinstall
+ $(PkgIntermediateDirectory)/resources
+
+ $(SdkPkgSourcesRootDirectory)/Distribution-Template
+ $(SdkPkgSourcesRootDirectory)/Distribution-Template-x64
+ $(PkgIntermediateDirectory)/CLI-SDK-Formatted-Distribution-Template.xml
+
+ $(PkgIntermediateDirectory)/$(SdkComponentId).pkg
+ $(PkgIntermediateDirectory)/$(SharedFrameworkComponentId).pkg
+ $(PkgIntermediateDirectory)/$(NetCoreAppTargetingPackComponentId).pkg
+ $(PkgIntermediateDirectory)/$(NetCoreAppHostPackComponentId).pkg
+ $(PkgIntermediateDirectory)/$(NetStandardTargetingPackComponentId).pkg
+ $(PkgIntermediateDirectory)/$(SharedHostComponentId).pkg
+ $(PkgIntermediateDirectory)/$(HostFxrComponentId).pkg
+
+ $(ArtifactsNonShippingPackagesDir)$(ArtifactNameWithVersionSdk)$(InstallerExtension)
+ $(ArtifactsShippingPackagesDir)$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(BundleExtension)
+
+
+
+
+
+
+ $(SharedFrameworkComponentId)
+
+
+ $(NetCoreAppTargetingPackComponentId)
+
+
+ $(NetStandardTargetingPackComponentId)
+
+
+ $(NetCoreAppHostPackComponentId)
+
+
+ $(SharedHostComponentId)
+
+
+ $(HostFxrComponentId)
+
+
+ $(SdkComponentId)
+
+
+ $(Version)
+
+
+ $(SdkBrandName)
+
+
+ $(SharedFrameworkBrandName)
+
+
+ $(NetCoreAppTargetingPackBrandName)
+
+
+ $(NetCoreAppHostPackBrandName)
+
+
+ $(NetStandardTargetingPackBrandName)
+
+
+ $(SharedHostBrandName)
+
+
+ $(HostFxrBrandName)
+
+
+ $(Architecture)
+
+
+ $(Architecture)
+ x86_64
+
+
+ 10.13
+ 11.0
+
+
+ $(x64EmulationPkgInstallDirectory)
+
+
+
+ $(Version)
+
+
+
+ $(Version)
+
+
+ $(MicrosoftNETCoreAppRuntimePackageVersion)
+
+
+ $(MicrosoftAspNetCoreAppRuntimePackageVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/GenerateRPMs.targets b/src/redist/targets/GenerateRPMs.targets
new file mode 100644
index 000000000..a82f068fc
--- /dev/null
+++ b/src/redist/targets/GenerateRPMs.targets
@@ -0,0 +1,365 @@
+
+
+
+ rpm_config.json
+ $(MSBuildThisFileDirectory)packaging/rpm/templates
+ $(MSBuildThisFileDirectory)packaging/rpm/scripts
+ after_install_host.sh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MicrosoftNETCoreAppRuntimeMajorMinorPatchVersion)
+
+
+ $(MicrosoftNETCoreAppRefMajorMinorPatchVersion)
+
+
+ $(AspNetCoreRuntimeMajorMinorPatchVersion)
+
+
+ $(AspNetCoreRefMajorMinorPatchVersion)
+
+
+ $(SharedFxRpmPackageName)
+
+
+ $(NetCoreAppTargetingPackRpmPackageName)
+
+
+ $(NetCoreAppHostPackRpmPackageName)
+
+
+ $(AspNetCoreSharedFxRpmPackageName)
+
+
+ $(AspNetTargetingPackRpmPackageName)
+
+
+ $(Version)
+
+
+ amd64
+ aarch64
+
+
+ $(SdkBrandName)
+
+
+ $(SdkRpmPackageName)
+
+
+
+ $(Version)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MajorMinorVersion)
+ $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(SdkRpmPackageVersion)
+ $(Version)
+ $(RedistLayoutPath)sdk/
+ $(RedistLayoutPath)templates/
+ $(ArtifactsShippingPackagesDir)$(DistroSpecificArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension)
+ $(SdkRPMInstallerFile)
+ $(ArtifactsShippingPackagesDir)$(MarinerArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension)
+ $(ArtifactsShippingPackagesDir)$(Mariner2ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension)
+
+ $(RepoRoot)/Documentation/manpages
+ $(RepoRoot)/test/EndToEnd/EndToEnd.csproj
+ $(MSBuildThisFileDirectory)packaging/rpm/dotnet-config.json
+ $(IntermediateOutputPath)$(SdkRpmPackageName)/$(RpmPackageVersion)
+ $(RpmIntermediatesDir)/rpm-testResults.xml
+ /usr/share/dotnet
+
+
+
+ $(RpmIntermediatesDir)/RpmLayoutDirectory/
+ $(RpmLayoutDirectory)package_root
+ $(RpmLayoutPackageRoot)/sdk
+ $(RpmLayoutPackageRoot)/templates
+ $(RpmLayoutPackageRoot)/sdk-manifests
+ $(RpmLayoutDirectory)docs
+ $(RpmLayoutDirectory)templates
+ $(RpmLayoutDirectory)scripts
+
+
+
+ $(MicrosoftNETCoreAppMajorMinorVersion)
+ $(MicrosoftNETCoreAppRuntimePackageVersion)
+ dotnet-runtime-$(SharedFxRpmPackageVersion)
+ $(SharedFxRpmPackageName.ToLower())
+ dotnet-runtime-$(SharedFxRpmPackageFileVersion)
+ $(SharedFxRpmPackageFileName.ToLower())
+ dotnet-targeting-pack-$(SharedFxRpmPackageVersion)
+ $(NetCoreAppTargetingPackRpmPackageName.ToLower())
+ dotnet-targeting-pack-$(MicrosoftNETCoreAppRefPackageVersion)
+ $(NetCoreAppTargetingPackRpmPackageFileName.ToLower())
+ dotnet-apphost-pack-$(SharedFxRpmPackageVersion)
+ $(NetCoreAppHostPackRpmPackageName.ToLower())
+ dotnet-apphost-pack-$(SharedFxRpmPackageFileVersion)
+ $(NetCoreAppHostPackRpmPackageFileName.ToLower())
+ netstandard-targeting-pack-$(NetStandardTargetingPackMajorMinorVersion)
+ $(NetStandardTargetingPackRpmPackageName.ToLower())
+ netstandard-targeting-pack-$(NETStandardLibraryRefPackageVersion)
+ $(NetStandardTargetingPackRpmPackageFileName.ToLower())
+ dotnet-hostfxr-$(SharedFxRpmPackageVersion)
+ $(HostFxrRpmPackageName.ToLower())
+ dotnet-runtime-deps-$(SharedFxRpmPackageVersion)
+ $(RuntimeDepsPackageName.ToLower())
+ dotnet-host
+ aspnetcore-runtime-$(AspNetCoreMajorMinorVersion)
+ $(AspNetCoreSharedFxRpmPackageName.ToLower())
+ aspnetcore-runtime-$(MicrosoftAspNetCoreRuntimePackageVersion)
+ $(AspNetCoreSharedFxRpmPackageFileName.ToLower())
+ aspnetcore-targeting-pack-$(AspNetCoreMajorMinorVersion)
+ $(AspNetTargetingPackRpmPackageName.ToLower())
+ aspnetcore-targeting-pack-$(MicrosoftAspNetCoreRefPackageVersion)
+ $(AspNetTargetingPackRpmPackageFileName.ToLower())
+ $(ScriptsDir)/$(AfterInstallHostScriptName)
+ $(RpmLayoutScripts)/$(AfterInstallHostScriptName)
+
+
+
+ $(DownloadsFolder)$(DownloadedNetCoreAppTargetingPackInstallerFileName)
+ $(DownloadsFolder)$(DownloadedNetStandardTargetingPackInstallerFileName)
+ $(DownloadsFolder)$(DownloadedNetCoreAppHostPackInstallerFileName)
+ $(DownloadsFolder)$(DownloadedAspNetTargetingPackInstallerFileName)
+ $(DownloadsFolder)$(DownloadedRuntimeDepsInstallerFileName)
+ $(DownloadsFolder)$(DownloadedSharedHostInstallerFileName)
+ $(DownloadsFolder)$(DownloadedHostFxrInstallerFileName)
+ $(DownloadsFolder)$(DownloadedSharedFrameworkInstallerFileName)
+ $(DownloadsFolder)$(DownloadedAspNetCoreSharedFxInstallerFileName)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/GetRuntimeInformation.targets b/src/redist/targets/GetRuntimeInformation.targets
new file mode 100644
index 000000000..a99a7e9da
--- /dev/null
+++ b/src/redist/targets/GetRuntimeInformation.targets
@@ -0,0 +1,53 @@
+
+
+
+ $([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)
+ win-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant)
+
+ True
+ win
+ osx
+ freebsd
+ linux
+
+ $(HostOSName)
+
+ $(OSName)-$(Architecture)
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+ $(Rid)
+ $(OSName)-$(Architecture)
+
+ $(HostOSName)-$(Architecture)
+
+ dotnet-sdk-internal$(PgoTerm)
+ dotnet-sdk$(PgoTerm)
+
+ $(ArtifactNameSdk)-$(Version)-$(ProductMonikerRid)
+ dotnet-standard-support-vs2015-$(Version)-$(ProductMonikerRid)
+ $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(Version)-$(ProductMonikerRid)
+
+ Dotnet SDK Bundle Installer $(CliProductBandVersion) $(ProductMonikerRid)
+
+ $(Architecture)
+ aarch64
+
+ $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(Version)-$(InstallerTargetArchitecture)
+
+ $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(Version)-cm.1-$(InstallerTargetArchitecture)
+ $(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(Version)-cm.2-$(InstallerTargetArchitecture)
+
+
+
+
diff --git a/src/redist/targets/LayoutTool.csproj b/src/redist/targets/LayoutTool.csproj
new file mode 100644
index 000000000..1ce7612ba
--- /dev/null
+++ b/src/redist/targets/LayoutTool.csproj
@@ -0,0 +1,26 @@
+
+
+
+ Library
+ false
+
+
+
+
+
+
+
+
+
+ $([System.IO.Path]::GetFullPath('$(NuGetPackageRoot)/$(PackageToRestore)/$(PackageVersionToRestore)'))
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/LinuxNativeInstallerDependencyVersions.targets b/src/redist/targets/LinuxNativeInstallerDependencyVersions.targets
new file mode 100644
index 000000000..82482b22a
--- /dev/null
+++ b/src/redist/targets/LinuxNativeInstallerDependencyVersions.targets
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/SetBuildDefaults.targets b/src/redist/targets/SetBuildDefaults.targets
new file mode 100644
index 000000000..eac457403
--- /dev/null
+++ b/src/redist/targets/SetBuildDefaults.targets
@@ -0,0 +1,45 @@
+
+
+
+
+
+ false
+
+ true
+ false
+
+ true
+
+ true
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+ %3b
+
+
+
diff --git a/src/redist/targets/Signing.targets b/src/redist/targets/Signing.targets
new file mode 100644
index 000000000..a4a2e29bb
--- /dev/null
+++ b/src/redist/targets/Signing.targets
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_DryRun>true
+ <_DryRun Condition="'$(OfficialBuild)' == 'true'">false
+
+ <_TestSign>false
+ <_TestSign Condition="'$(DotNetSignType)' == 'test'">true
+
+ <_DesktopMSBuildRequired>false
+ <_DesktopMSBuildRequired Condition="'$(_DryRun)' != 'true' and '$(MSBuildRuntimeType)' == 'Core'">true
+
+
+
+
+
+
+
+
+ <_DesktopMSBuildPath Condition="$(_DesktopMSBuildRequired)">$(_VSInstallDir)\MSBuild\15.0\Bin\msbuild.exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/Versions.targets b/src/redist/targets/Versions.targets
new file mode 100644
index 000000000..4e08d5063
--- /dev/null
+++ b/src/redist/targets/Versions.targets
@@ -0,0 +1,17 @@
+
+
+
+ $(VersionPrefix)-$(PreReleaseVersionLabel)
+ $(FullNugetVersion).$(PreReleaseVersionIteration)
+ $(FullNugetVersion).$(VersionSuffixDateStamp).$(VersionSuffixBuildOfTheDay)
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/deb/dotnet-debian_config.json b/src/redist/targets/packaging/deb/dotnet-debian_config.json
new file mode 100644
index 000000000..321892b8f
--- /dev/null
+++ b/src/redist/targets/packaging/deb/dotnet-debian_config.json
@@ -0,0 +1,39 @@
+{
+ "maintainer_name":"Microsoft",
+ "maintainer_email": "dotnetcore@microsoft.com",
+
+ "package_name": "dotnet-sdk-%SDK_NUGET_VERSION%",
+ "install_root": "/usr/share/dotnet",
+
+ "short_description": "%CLI_SDK_BRAND_NAME%",
+ "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.",
+ "homepage": "https://github.com/dotnet/core",
+
+ "release":{
+ "package_version":"0.0.0.0",
+ "package_revision":"1",
+ "urgency" : "low",
+ "changelog_message" : "Bootstrap loop package"
+ },
+
+ "control": {
+ "priority":"standard",
+ "section":"devel",
+ "architecture":"any"
+ },
+
+ "copyright": ".NET Foundation and contributors",
+ "license": {
+ "type": "MIT",
+ "full_text": "The MIT License (MIT)\nCopyright (c) .NET Foundation and Contributors\n\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
+ },
+
+ "debian_dependencies":{
+ "%SHARED_FRAMEWORK_DEBIAN_PACKAGE_NAME%": { "package_version": "%SHARED_FRAMEWORK_DEBIAN_PACKAGE_VERSION%" }%SHARED_FRAMEWORK_DEBIAN_PACKAGE_ADDITIONAL_DEPENDENCY%,
+ "%NETCOREAPP_TARGETING_PACK_DEBIAN_PACKAGE_NAME%": { "package_version": "%NETCOREAPP_TARGETING_PACK_DEBIAN_PACKAGE_VERSION%" },
+ "%NETCORE_APPHOST_PACK_DEBIAN_PACKAGE_NAME%": { "package_version": "%SHARED_FRAMEWORK_DEBIAN_PACKAGE_VERSION%" },
+ "%NETSTANDARD_TARGETING_PACK_DEBIAN_PACKAGE_NAME%": { "package_version": "%NET_STANDARD_DEBIAN_PACKAGE_VERSION%" },
+ "%ASPNETCORE_SHAREDFX_DEBIAN_PACKAGE_NAME%": { "package_version": "%ASPNETCORE_SHAREDFX_DEBIAN_PACKAGE_VERSION%" },
+ "%ASPNET_TARGETING_PACK_DEBIAN_PACKAGE_NAME%": { "package_version": "%ASPNET_TARGETING_PACK_DEBIAN_PACKAGE_VERSION%" }
+ }
+}
diff --git a/src/redist/targets/packaging/deb/postinst b/src/redist/targets/packaging/deb/postinst
new file mode 100644
index 000000000..142daff4e
--- /dev/null
+++ b/src/redist/targets/packaging/deb/postinst
@@ -0,0 +1,27 @@
+#!/usr/bin/env sh
+echo "This software may collect information about you and your use of the software, and send that to Microsoft."
+echo "Please visit http://aka.ms/dotnet-cli-eula for more information."
+
+# Run 'dotnet new' to trigger the first time experience to initialize the cache
+echo "Welcome to .NET!
+---------------------
+Learn more about .NET: https://aka.ms/dotnet-docs
+Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs
+
+Telemetry
+---------
+The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
+
+Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
+
+Configuring...
+--------------
+A command is running to populate your local package cache to improve restore speed and enable offline access. This command takes up to one minute to complete and only runs once."
+
+first_run() {
+ /usr/share/dotnet/dotnet exec /usr/share/dotnet/sdk/%SDK_VERSION%/dotnet.dll internal-reportinstallsuccess "debianpackage" > /dev/null 2>&1 || true
+}
+
+INSTALL_TEMP_HOME=/tmp/dotnet-installer
+[ -d $INSTALL_TEMP_HOME ] || mkdir $INSTALL_TEMP_HOME
+HOME=$INSTALL_TEMP_HOME first_run
diff --git a/src/redist/targets/packaging/osx/clisdk/Distribution-Template b/src/redist/targets/packaging/osx/clisdk/Distribution-Template
new file mode 100644
index 000000000..87a917149
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/Distribution-Template
@@ -0,0 +1,50 @@
+
+
+ {CLISdkBrandName} ({arch})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {NetCoreAppTargetingPackComponentId}.pkg
+ {NetStandardTargetingPackComponentId}.pkg
+ {NetCoreAppHostPackComponentId}.pkg
+ {SharedFxComponentId}.pkg
+ {HostFxrComponentId}.pkg
+ {SharedHostComponentId}.pkg
+ {CLISdkComponentId}.pkg
+
diff --git a/src/redist/targets/packaging/osx/clisdk/Distribution-Template-x64 b/src/redist/targets/packaging/osx/clisdk/Distribution-Template-x64
new file mode 100644
index 000000000..cbd637311
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/Distribution-Template-x64
@@ -0,0 +1,101 @@
+
+
+ {CLISdkBrandName} ({arch})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {NetCoreAppTargetingPackComponentId}.pkg
+ {NetStandardTargetingPackComponentId}.pkg
+ {NetCoreAppHostPackComponentId}.pkg
+ {SharedFxComponentId}.pkg
+ {HostFxrComponentId}.pkg
+ {SharedHostComponentId}.pkg
+ {CLISdkComponentId}.pkg
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/cs.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/cs.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/cs.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/cs.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/cs.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/cs.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/de.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/de.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/de.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/de.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/de.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/de.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/dotnetbackground.png b/src/redist/targets/packaging/osx/clisdk/resources/dotnetbackground.png
new file mode 100644
index 000000000..16a6bf22b
Binary files /dev/null and b/src/redist/targets/packaging/osx/clisdk/resources/dotnetbackground.png differ
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/en.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/en.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/en.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/en.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/en.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/en.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/es.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/es.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/es.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/es.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/es.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/es.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/fr.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/fr.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/fr.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/fr.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/fr.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/fr.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/it.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/it.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/it.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/it.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/it.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/it.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/ja.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/ja.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/ja.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/ja.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/ja.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/ja.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/ko.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/ko.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/ko.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/ko.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/ko.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/ko.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/pl.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/pl.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/pl.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/pl.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/pl.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/pl.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/pt-br.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/pt-br.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/pt-br.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/pt-br.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/pt-br.lproj/welcome.html
new file mode 100644
index 000000000..3aa06fcd9
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/pt-br.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/ru.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/ru.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/ru.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/ru.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/ru.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/ru.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/tr.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/tr.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/tr.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/tr.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/tr.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/tr.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/zh-hans.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/zh-hans.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/zh-hans.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/zh-hans.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/zh-hans.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/zh-hans.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/zh-hant.lproj/conclusion.html b/src/redist/targets/packaging/osx/clisdk/resources/zh-hant.lproj/conclusion.html
new file mode 100644
index 000000000..7159a3518
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/zh-hant.lproj/conclusion.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
The following was installed
+
+ - .NET SDK {DOTNETSDKVERSION}
+ - .NET Runtime {DOTNETRUNTIMEVERSION}
+ - ASP.NET Core Runtime {ASPNETCOREVERSION}
+
+
+
+
+
This product collects usage data
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/resources/zh-hant.lproj/welcome.html b/src/redist/targets/packaging/osx/clisdk/resources/zh-hant.lproj/welcome.html
new file mode 100644
index 000000000..d870f0949
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/resources/zh-hant.lproj/welcome.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
.NET SDK
+
.NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!
+
+
+
Learn more about .NET
+
+
+
+
+
Installation note
+
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+
+
diff --git a/src/redist/targets/packaging/osx/clisdk/scripts/postinstall b/src/redist/targets/packaging/osx/clisdk/scripts/postinstall
new file mode 100644
index 000000000..28339be99
--- /dev/null
+++ b/src/redist/targets/packaging/osx/clisdk/scripts/postinstall
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+#
+
+PACKAGE=$1
+INSTALL_DESTINATION=$2
+INSTALL_TEMP_HOME=/tmp/dotnet-installer
+
+first_run() {
+ $INSTALL_DESTINATION/dotnet exec $INSTALL_DESTINATION/sdk/%SDK_VERSION%/dotnet.dll internal-reportinstallsuccess "$1" > /dev/null 2>&1 || true
+}
+
+[ -d $INSTALL_TEMP_HOME ] || mkdir $INSTALL_TEMP_HOME
+HOME=$INSTALL_TEMP_HOME first_run
+
+exit 0
diff --git a/src/redist/targets/packaging/rpm/dotnet-config.json b/src/redist/targets/packaging/rpm/dotnet-config.json
new file mode 100644
index 000000000..1a9d84999
--- /dev/null
+++ b/src/redist/targets/packaging/rpm/dotnet-config.json
@@ -0,0 +1,53 @@
+{
+ "maintainer_name": "Microsoft",
+ "maintainer_email": "dotnetcore@microsoft.com",
+ "vendor": ".NET Foundation",
+ "package_name": "%SDK_RPM_PACKAGE_NAME%",
+ "install_root": "/usr/share/dotnet",
+ "install_doc": "/usr/share/doc/%SDK_RPM_PACKAGE_NAME%/",
+ "short_description": "%CLI_SDK_BRAND_NAME% %SDK_NUGET_VERSION%",
+ "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.",
+ "homepage": "https://github.com/dotnet/core",
+ "release": {
+ "package_version": "1.0.0.0",
+ "package_revision": "1",
+ "changelog_message": "Bootstrap loop package"
+ },
+ "control": {
+ "architecture": "%SDK_RPM_PACKAGE_ARCHITECTURE%"
+ },
+ "copyright": ".NET Foundation and contributors",
+ "license": {
+ "type": "MIT",
+ "full_text": "The MIT License (MIT)\nCopyright (c) .NET Foundation and Contributors\n\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
+ },
+ "rpm_dependencies": [
+ {
+ "package_name": "%SHARED_FRAMEWORK_RPM_PACKAGE_NAME%",
+ "package_version": "%SHARED_FRAMEWORK_RPM_PACKAGE_VERSION%"
+ },
+ {
+ "package_name": "%NETCOREAPP_TARGETING_PACK_RPM_PACKAGE_NAME%",
+ "package_version": "%NETCOREAPP_TARGETING_PACK_RPM_PACKAGE_VERSION%"
+ },
+ {
+ "package_name": "%NETCORE_APPHOST_PACK_RPM_PACKAGE_NAME%",
+ "package_version": "%SHARED_FRAMEWORK_RPM_PACKAGE_VERSION%"
+ },
+%SDK_RPM_NETSTANDARD_TARGETINGPACK_DEPENDENCY%
+ {
+ "package_name": "%ASPNETCORE_SHAREDFX_RPM_PACKAGE_NAME%",
+ "package_version": "%ASPNETCORE_SHAREDFX_RPM_PACKAGE_VERSION%"
+ },
+ {
+ "package_name": "%ASPNET_TARGETING_PACK_RPM_PACKAGE_NAME%",
+ "package_version": "%ASPNET_TARGETING_PACK_RPM_PACKAGE_VERSION%"
+ }
+ ],
+ "directories": [
+ "/usr/share/dotnet/sdk",
+ "/usr/share/doc/%SDK_RPM_PACKAGE_NAME%"
+ ],
+ "after_install_source": "scripts/after_install_host.sh",
+ "after_remove_source": "scripts/after_remove_host.sh"
+}
diff --git a/src/redist/targets/packaging/rpm/scripts/after_install_host.sh b/src/redist/targets/packaging/rpm/scripts/after_install_host.sh
new file mode 100644
index 000000000..b3560eabc
--- /dev/null
+++ b/src/redist/targets/packaging/rpm/scripts/after_install_host.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+#
+echo "This software may collect information about you and your use of the software, and send that to Microsoft."
+echo "Please visit http://aka.ms/dotnet-cli-eula for more information."
+
+# Run 'dotnet new' as the user to trigger the first time experience to initialize the cache
+echo "Welcome to .NET!
+---------------------
+Learn more about .NET: https://aka.ms/dotnet-docs
+Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs
+
+Telemetry
+---------
+The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
+
+Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
+
+Configuring...
+--------------
+A command is running to populate your local package cache to improve restore speed and enable offline access. This command takes up to one minute to complete and only runs once."
+
+first_run() {
+ /usr/share/dotnet/dotnet exec /usr/share/dotnet/sdk/%SDK_VERSION%/dotnet.dll internal-reportinstallsuccess "rpmpackage" > /dev/null 2>&1 || true
+}
+
+INSTALL_TEMP_HOME=/tmp/dotnet-installer
+[ -d $INSTALL_TEMP_HOME ] || mkdir $INSTALL_TEMP_HOME
+HOME=$INSTALL_TEMP_HOME first_run
diff --git a/src/redist/targets/packaging/rpm/scripts/after_remove_host.sh b/src/redist/targets/packaging/rpm/scripts/after_remove_host.sh
new file mode 100644
index 000000000..bb0cdef0a
--- /dev/null
+++ b/src/redist/targets/packaging/rpm/scripts/after_remove_host.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+#
diff --git a/src/redist/targets/packaging/rpm/templates/changelog b/src/redist/targets/packaging/rpm/templates/changelog
new file mode 100644
index 000000000..e61dbc607
--- /dev/null
+++ b/src/redist/targets/packaging/rpm/templates/changelog
@@ -0,0 +1,2 @@
+* {DATE} {MAINTAINER_NAME} <{MAINTAINER_EMAIL}> - {PACKAGE_VERSION}-{PACKAGE_REVISION}
+- {CHANGELOG_MESSAGE}
diff --git a/src/redist/targets/packaging/rpm/templates/copyright b/src/redist/targets/packaging/rpm/templates/copyright
new file mode 100644
index 000000000..a336435d6
--- /dev/null
+++ b/src/redist/targets/packaging/rpm/templates/copyright
@@ -0,0 +1,8 @@
+Comment: Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+Files: *
+Copyright: {COPYRIGHT_TEXT}
+License: {LICENSE_NAME}
+
+License: {LICENSE_NAME}
+ {LICENSE_TEXT}
\ No newline at end of file
diff --git a/src/redist/targets/packaging/windows/clisdk/Init.cmd b/src/redist/targets/packaging/windows/clisdk/Init.cmd
new file mode 100644
index 000000000..57b10e6a7
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/Init.cmd
@@ -0,0 +1,16 @@
+@echo off
+
+set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+set DOTNET_MULTILEVEL_LOOKUP=0
+set PATH=%~dp0;%PATH%
+
+if not "%PROCESSOR_ARCHITECTURE%"=="x86" goto :SetDotnetRoot_Wow
+if not "%PROCESSOR_ARCHITEW6432%"== "" goto :SetDotnetRoot_Wow
+
+:SetDotnetRoot
+set DOTNET_ROOT=%~dp0
+goto :eof
+
+:SetDotnetRoot_Wow
+set DOTNET_ROOT(x86)=%~dp0
+goto :eof
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1028/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1028/bundle.wxl
new file mode 100644
index 000000000..dd1b836f6
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1028/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName] 安裝程式
+ [BUNDLEMONIKER]
+ 您確定要取消嗎?
+ 前一版
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - 在目錄中安裝、修復、解除安裝或
+ 建立套件組合的完整本機複本。預設為 '/install'。
+
+/passive | /quiet - 顯示最少 UI 且不顯示提示,或不顯示 UI,也
+ 不顯示提示。預設會顯示 UI 和所有提示。
+
+/norestart - 隱藏任何重新啟動嘗試。根據預設,UI 會在重新啟動之前提示。
+/log [\[]"log.txt"[\]] - 記錄至特定檔案。預設會在 %TEMP% 建立記錄檔。
+ 關閉(&C)
+ 我同意授權條款及條件(&A)
+ 選項(&O)
+ 安裝(&I)
+ 關閉(&C)
+
+ 正在處理:
+ 正在初始化...
+ 取消(&C)
+
+ 修復(&R)
+ 解除安裝(&U)
+ 關閉(&C)
+
+
+
+ 啟動(&L)
+ 您必須重新啟動電腦,以完成軟體的安裝。
+ 重新啟動(&R)
+ 關閉(&C)
+
+
+
+
+ 有一個或多個問題導致安裝程式失敗。請解決問題,然後重試一次安裝。如需詳細資訊,請參閱<a href="#">記錄檔</a>。
+ 必須重新啟動電腦才可完成軟體復原。
+ 重新啟動(&R)
+ 關閉(&C)
+
+ 以下應用程式正在使用需要進行更新的檔案:
+ 關閉應用程式並嘗試重新啟動(&A)
+ 不關閉應用程式,需要重新啟動(&D)
+ 確定(&O)
+ 取消(&C)
+ 安裝成功。
+
+下列項目已安裝在: '[DOTNETHOME]'
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET Runtime [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Runtime [ASPNETCOREVERSION]
+ • .NET Windows Desktop Runtime [WINFORMSANDWPFVERSION]
+
+此產品會收集使用方式資料
+ • 如需詳細資訊並退出,請前往 https://aka.ms/dotnet-cli-telemetry
+
+資源
+ • 如需 .NET 文件,請前往 https://aka.ms/dotnet-docs
+ • 如需 SDK 文件,請前往 https://aka.ms/dotnet-sdk-docs
+ • 如需版本資訊,請前往 https://aka.ms/dotnet6-release-notes
+ • 如需教學課程,請前往 https://aka.ms/dotnet-tutorials
+
+
+ .NET SDK 可用於建置、執行及測試 .NET 應用程式。您可以選擇多種語言、編輯器以及開發人員工具,並可利用程式庫的大型生態系統,來建置 Web、行動裝置、桌面、遊戲及 IoT 的應用程式。希望您會喜歡!
+ 深入了解 .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET 文件</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK 文件</A>
+ <A HREF="https://aka.ms/dev-privacy">隱私權聲明</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">.NET 的授權資訊</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">遙測集合與退出功能</A>
+ 安裝附註
+ 安裝程序期間將會執行命令,加快專案還原速度並啟用離線存取。最多需要一分鐘的時間完成。
+
+ 若預計要搭配 Visual Studio 使用 .NET 6.0,需要 Visual Studio 2022 17.0 或更新版本。<A HREF="https://aka.ms/dotnet6-release-notes">深入了解</A>.
+
+ 按一下 [\[]安裝[\[] 即表示您同意下列條款。
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1029/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1029/bundle.wxl
new file mode 100644
index 000000000..893412976
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1029/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Instalační program pro [WixBundleName]
+ [BUNDLEMONIKER]
+ Opravdu chcete akci zrušit?
+ Předchozí verze
+
+ /install | /repair | /uninstall | /layout [\[]"adresář"[\]] – Nainstaluje, opraví, odinstaluje nebo
+ vytvoří úplnou místní kopii svazku v adresáři. Výchozí možností je /install.
+
+/passive | /quiet – Zobrazí minimální uživatelské rozhraní bez výzev nebo nezobrazí žádné uživatelské rozhraní a
+ žádné výzvy. Výchozí možností je zobrazení uživatelského rozhraní a všech výzev.
+
+/norestart – Potlačí všechny pokusy o restartování. Ve výchozím nastavení uživatelské rozhraní před restartováním zobrazí výzvu.
+/log [\[]"log.txt"[\]] – Uloží protokol do konkrétního souboru. Ve výchozím nastavení se soubor protokolu vytvoří v adresáři %TEMP%.
+ &Zavřít
+ Souhl&asím s licenčními podmínkami.
+ &Možnosti
+ &Nainstalovat
+ &Zavřít
+
+ Zpracování:
+ Inicializuje se...
+ &Zrušit
+
+ Op&ravit
+ Odi&nstalovat
+ &Zavřít
+
+
+
+ &Spustit
+ Aby bylo možné dokončit instalaci softwaru, je nutné restartovat počítač.
+ &Restartovat
+ &Zavřít
+
+
+
+
+ Instalace se nepovedla kvůli jednomu nebo víc problémům. Opravte tyto problémy a zkuste software znovu nainstalovat. Další informace najdete v <a href="#">souboru protokolu</a>.
+ Pro dokončení vrácení změn tohoto softwaru je potřeba restartovat počítač.
+ &Restartovat
+ &Zavřít
+
+ Následující aplikace používají soubory, které je potřeba aktualizovat:
+ Zavřete &aplikace a zkuste je restartovat.
+ A&plikace nezavírejte. Bude potřeba provést restart.
+ &OK
+ &Zrušit
+ Instalace proběhla úspěšně.
+
+Do [DOTNETHOME] byly nainstalovány tyto součásti:
+ • Sada .NET SDK [DOTNETSDKVERSION]
+ • Modul runtime .NET [DOTNETRUNTIMEVERSION]
+ • Modul runtime ASP.NET Core [ASPNETCOREVERSION]
+ • Modul runtime .NET Windows Desktop [WINFORMSANDWPFVERSION]
+
+Tento produkt shromažďuje data o využití.
+ • Další informace a vyjádření výslovného nesouhlasu: https://aka.ms/dotnet-cli-telemetry
+
+Zdroje informací
+ • Dokumentace k .NET : https://aka.ms/dotnet-docs
+ • Dokumentace k sadě SDK: https://aka.ms/dotnet-sdk-docs
+ • Zpráva k vydání verze: https://aka.ms/dotnet6-release-notes
+ • Kurzy: https://aka.ms/dotnet-tutorials
+
+
+ Sada .NET SDK se používá k vytváření, spouštění a testování aplikací .NET. Můžete si vybrat z několika jazyků, editorů a vývojářských nástrojů. K dispozici jsou výhody rozsáhlého ekosystému knihoven, se kterými můžete vytvářet aplikace pro web, mobilní zařízení, desktop, herní zařízení a IoT. Doufáme, že se vám bude líbit!
+ Další informace o .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Dokumentace k architektuře .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Dokumentace k sadě SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Prohlášení o zásadách ochrany osobních údajů</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Informace o licencování pro .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Kolekce telemetrie a výslovný nesouhlas</A>
+ Poznámka k instalaci
+ Během procesu instalace se spustí příkaz, který zlepší rychlost obnovení projektu a povolí offline přístup. Akce se dokončí přibližně za minutu.
+
+ Pokud se chystáte používat .NET 6.0 se sadou Visual Studio, potřebujete Visual Studio 2022 17.0 nebo novější. <A HREF="https://aka.ms/dotnet6-release-notes">Další informace</A>.
+
+ Kliknutím na Nainstalovat vyjadřujete souhlas s následujícími podmínkami.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1031/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1031/bundle.wxl
new file mode 100644
index 000000000..1524c80c0
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1031/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName]-Installer
+ [BUNDLEMONIKER]
+ Möchten Sie den Vorgang wirklich abbrechen?
+ Vorherige Version
+
+ /install | /repair | /uninstall | /layout [\[]"Verzeichnis"[\]]: Installiert, repariert, deinstalliert oder
+ erstellt eine vollständige lokale Kopie des Bundles im Verzeichnis. "/install" ist die Standardeinstellung.
+
+/passive | /quiet: Zeigt eine minimale Benutzeroberfläche ohne Eingabeaufforderungen bzw. keine
+ Benutzeroberfläche und keine Eingabeaufforderungen an. Standardmäßig werden die Benutzeroberfläche und alle Eingabeaufforderungen angezeigt.
+
+/norestart: Unterdrückt alle Neustartversuche. Standardmäßig fordert die Benutzeroberfläche zum Bestätigen eines Neustarts auf.
+/log [\[]"log.txt"[\]]: Erstellt das Protokoll in einer bestimmten Datei. Standardmäßig wird die Protokolldatei in %TEMP% erstellt.
+ &Schließen
+ Ich &stimme den Lizenzbedingungen zu.
+ &Optionen
+ &Installieren
+ &Schließen
+
+ Verarbeitung:
+ Initialisierung...
+ &Abbrechen
+
+ &Reparieren
+ &Deinstallieren
+ &Schließen
+
+
+
+ &Starten
+ Sie müssen den Computer neu starten, um die Installation der Software abzuschließen.
+ &Neu starten
+ &Schließen
+
+
+
+
+ Setup ist aufgrund eines oder mehrerer Probleme fehlgeschlagen. Beheben Sie die Probleme, und führen Sie das Setup erneut aus. Weitere Informationen finden Sie in der <a href="#">Protokolldatei</a>.
+ Sie müssen Ihren Computer neu starten, um den Rollback der Software abzuschließen.
+ &Neu starten
+ &Schließen
+
+ Die folgenden Anwendungen verwenden Dateien, die aktualisiert werden müssen:
+ Schließen Sie die &Anwendungen, und versuchen Sie sie erneut zu starten.
+ &Anwendungen nicht schließen. Ein Neustart ist erforderlich.
+ &OK
+ &Abbrechen
+ Die Installation war erfolgreich.
+
+Folgende Komponenten wurden unter [DOTNETHOME] installiert:
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET Runtime [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Runtime [ASPNETCOREVERSION]
+ • .NET Windows Desktop Runtime [WINFORMSANDWPFVERSION]
+
+Dieses Produkt erfasst Nutzungsdaten.
+ • Weitere Informationen und Deaktivieren der Erfassung: https://aka.ms/dotnet-cli-telemetry
+
+Ressourcen
+ • .NET-Dokumentation: https://aka.ms/dotnet-docs
+ • SDK-Dokumentation: https://aka.ms/dotnet-sdk-docs
+ • Versionshinweise: https://aka.ms/dotnet6-release-notes
+ • Tutorials: https://aka.ms/dotnet-tutorials
+
+
+ Das .NET SDK wird zum Erstellen, Ausführen und Testen von .NET-Anwendungen verwendet. Sie können aus mehreren Sprachen, Editoren und Entwicklertools auswählen und ein großes Bibliotheksnetzwerk nutzen, um Apps für das Web, mobile Geräte, Desktops, Gaming und IoT zu entwickeln. Wir wünschen Ihnen viel Spaß damit!
+ Weitere Informationen zu .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET-Dokumentation</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK-Dokumentation</A>
+ <A HREF="https://aka.ms/dev-privacy">Datenschutzerklärung</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Lizenzierungsinformationen für .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Sammlung von Telemetriedaten und Deaktivieren der Telemetriefunktion</A>
+ Installationshinweis
+ Während des Installationsvorgangs wird ein Befehl ausgeführt, durch den die Geschwindigkeit der Projektwiederherstellung verbessert und der Offlinezugriff aktiviert wird. Der Vorgang dauert bis zu einer Minute.
+
+ Wenn Sie .NET 6.0 mit Visual Studio verwenden möchten, ist Visual Studio 2022 17.0 oder höher erforderlich. <A HREF="https://aka.ms/dotnet6-release-notes">Weitere Informationen</A>
+
+ Durch Klicken auf "Installieren" stimmen Sie den nachstehenden Bedingungen zu.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1033/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1033/bundle.wxl
new file mode 100644
index 000000000..436c5ef0a
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1033/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName] Installer
+ [BUNDLEMONIKER]
+ Are you sure you want to cancel?
+ Previous version
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - installs, repairs, uninstalls
+ or creates a complete local copy of the bundle in directory. '/install' is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default, UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default, UI will prompt before restart.
+/log [\[]"log.txt"[\]] - logs to a specific file. By default, a log file is created in %TEMP%.
+ &Close
+ I &agree to the license terms and conditions
+ &Options
+ &Install
+ &Close
+
+ Processing:
+ Initializing...
+ &Cancel
+
+ &Repair
+ &Uninstall
+ &Close
+
+
+
+ &Launch
+ You must restart your computer to complete the installation of the software.
+ &Restart
+ &Close
+
+
+
+
+ One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information, see the <a href="#">log file</a>.
+ You must restart your computer to complete the rollback of the software.
+ &Restart
+ &Close
+
+ The following applications are using files that need to be updated:
+ Close the &applications and attempt to restart them.
+ &Do not close applications. A reboot will be required.
+ &OK
+ &Cancel
+ The installation was successful.
+
+The following products were installed at: '[DOTNETHOME]'
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET Runtime [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Runtime [ASPNETCOREVERSION]
+ • .NET Windows Desktop Runtime [WINFORMSANDWPFVERSION]
+
+This product collects usage data
+ • More information and opt-out https://aka.ms/dotnet-cli-telemetry
+
+Resources
+ • .NET Documentation https://aka.ms/dotnet-docs
+ • SDK Documentation https://aka.ms/dotnet-sdk-docs
+ • Release Notes https://aka.ms/dotnet6-release-notes
+ • Tutorials https://aka.ms/dotnet-tutorials
+
+
+ The .NET SDK is used to build, run, and test .NET applications. You can choose from multiple languages, editors, and developer tools, and take advantage of a large ecosystem of libraries to build apps for web, mobile, desktop, gaming, and IoT. We hope you enjoy it!
+ Learn more about .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET Documentation</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK Documentation</A>
+ <A HREF="https://aka.ms/dev-privacy">Privacy Statement</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Licensing Information for .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetry collection and opt-out</A>
+ Installation note
+ A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
+
+ If you plan to use .NET 6.0 with Visual Studio, Visual Studio 2022 17.0 or newer is required. <A HREF="https://aka.ms/dotnet6-release-notes">Learn more</A>.
+
+ By clicking Install, you agree to the following terms:
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1036/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1036/bundle.wxl
new file mode 100644
index 000000000..daee64a00
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1036/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Programme d'installation de [WixBundleName]
+ [BUNDLEMONIKER]
+ Voulez-vous vraiment annuler ?
+ Version précédente
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - installe, répare, désinstalle
+ ou crée une copie locale complète du bundle dans le répertoire. '/install' est la valeur par défaut.
+
+/passive | /quiet - affiche une IU (interface utilisateur) minimale, sans invite, ou n'affiche
+ aucune IU, ni aucune invite. Par défaut, l'IU et toutes les invites sont affichées.
+
+/norestart - supprime toutes les tentatives de redémarrage. Par défaut, l'IU affiche une invite avant le redémarrage.
+/log [\[]"log.txt"[\]] - enregistre les informations dans un fichier spécifique. Par défaut, un fichier journal est créé dans %TEMP%.
+ &Fermer
+ J'&accepte les conditions générales de la licence
+ &Options
+ &Installer
+ &Fermer
+
+ En cours :
+ Initialisation...
+ &Annuler
+
+ &Réparer
+ &Désinstaller
+ &Fermer
+
+
+
+ &Lancer
+ Vous devez redémarrer l'ordinateur pour achever l'installation du logiciel.
+ &Redémarrer
+ &Fermer
+
+
+
+
+ Un ou plusieurs problèmes sont à l'origine de l'échec de l'installation. Corrigez ces problèmes, puis recommencez l'installation. Pour plus d'informations, voir le <a href="#">fichier journal</a>.
+ Vous devez redémarrer votre ordinateur afin de terminer la restauration du logiciel.
+ &Redémarrer
+ &Fermer
+
+ Les applications suivantes utilisent des fichiers nécessitant une mise à jour :
+ &Fermer les applications essayez de les ouvrir de nouveau.
+ &Ne pas fermer les applications. Un redémarrage sera nécessaire.
+ &OK
+ &Annuler
+ L'installation a réussi.
+
+Les éléments suivants ont été installés sur : '[DOTNETHOME]'
+ • Kit SDK .NET [DOTNETSDKVERSION]
+ • Runtime .NET [DOTNETRUNTIMEVERSION]
+ • Runtime ASP.NET Core [ASPNETCOREVERSION]
+ • Runtime .NET Windows Desktop [WINFORMSANDWPFVERSION]
+
+Ce produit collecte des données d'utilisation
+ • Plus informations et refus d'adhésion sur https://aka.ms/dotnet-cli-telemetry
+
+Ressources
+ • Documentation .NET sur https://aka.ms/dotnet-docs
+ • Documentation de kit SDK sur https://aka.ms/dotnet-sdk-docs
+ • Notes de publication sur https://aka.ms/dotnet6-release-notes
+ • Tutoriels sur https://aka.ms/dotnet-tutorials
+
+
+ Le kit SDK .NET permet de générer, d'exécuter et de tester des applications .NET. Vous pouvez choisir parmi plusieurs langages, éditeurs et outils de développement. De plus, vous pouvez bénéficier d'un vaste écosystème de bibliothèques afin de générer des applications pour le web, les appareils mobiles, les ordinateurs de bureau, les jeux et l'IoT. Nous espérons que vous l'apprécierez !
+ En savoir plus sur .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Documentation .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Documentation du kit SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Déclaration de confidentialité</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Informations de licence pour .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Collecte et désactivation de la télémétrie</A>
+ Note d'installation
+ Une commande va être exécutée pendant le processus d'installation, ce qui va améliorer la vitesse de restauration du projet et permettre l'accès hors connexion. L'opération va prendre environ une minute.
+
+ Si vous comptez utiliser .NET 6.0 avec Visual Studio, Visual Studio 2022 17.0 ou une version ultérieure est nécessaire. <A HREF="https://aka.ms/dotnet6-release-notes">En savoir plus</A>.
+
+ En cliquant sur Installer, vous acceptez les conditions suivantes.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1040/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1040/bundle.wxl
new file mode 100644
index 000000000..c8322a175
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1040/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Programma di installazione di [WixBundleName]
+ [BUNDLEMONIKER]
+ Annullare?
+ Versione precedente
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - installa, ripara, disinstalla o
+ crea una copia locale completa del bundle nella directory. L'opzione predefinita è '/install'.
+
+/passive | /quiet - visualizza un'interfaccia utente minima senza prompt oppure non visualizza alcuna interfaccia utente
+ né prompt. Per impostazione predefinita, viene visualizzata l'intera interfaccia utente e tutti i prompt.
+
+/norestart - annulla qualsiasi tentativo di riavvio. Per impostazione predefinita, l'interfaccia utente visualizza una richiesta prima del riavvio.
+/log [\[]"log.txt"[\]] - registra il log in un file specifico. Per impostazione predefinita, viene creato un file di log in %TEMP%.
+ &Chiudi
+ &Accetto i termini e le condizioni di licenza
+ &Opzioni
+ &Installa
+ &Chiudi
+
+ Elaborazione di:
+ Inizializzazione in corso...
+ Ann&ulla
+
+ &Ripristina
+ &Disinstalla
+ &Chiudi
+
+
+
+ &Avvia
+ Per completare l'installazione del software, è necessario riavviare il computer.
+ &Riavvia
+ &Chiudi
+
+
+
+
+ L'installazione non è riuscita a causa di uno o più problemi. Risolvere i problemi e ripetere l'installazione. Per altre informazioni, vedere il <a href="#">file di log</a>.
+ Per completare il rollback del software, è necessario riavviare il computer.
+ &Riavvia
+ &Chiudi
+
+ Le applicazioni seguenti usano file che necessitano di aggiornamento:
+ Chiudere le &applicazioni e provare a riavviarle.
+ &Non chiudere le applicazioni; sarà necessario riavviare il sistema
+ &OK
+ Ann&ulla
+ L'installazione è riuscita.
+
+I componenti seguenti sono stati installati in '[DOTNETHOME]'
+ • .NET SDK [DOTNETSDKVERSION]
+ • Runtime di .NET [DOTNETRUNTIMEVERSION]
+ • Runtime di ASP.NET Core [ASPNETCOREVERSION]
+ • Runtime di .NET Windows Desktop [WINFORMSANDWPFVERSION]
+
+Questo prodotto consente di raccogliere i dati sull'utilizzo
+ • Altre informazioni e annullamento sottoscrizione https://aka.ms/dotnet-cli-telemetry
+
+Risorse
+ • Documentazione di .NET https://aka.ms/dotnet-docs
+ • Documentazione dell'SDK https://aka.ms/dotnet-sdk-docs
+ • Note sulla versione https://aka.ms/dotnet6-release-notes
+ • Esercitazioni https://aka.ms/dotnet-tutorials
+
+
+ .NET SDK consente di creare, eseguire e testare applicazioni NET. È possibile scegliere tra più linguaggi, editor e strumenti di sviluppo e sfruttare un vasto ecosistema di librerie per creare app per Web, dispositivi mobili, desktop, giochi e IoT.
+ Altre informazioni su .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Documentazione di .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Documentazione dell'SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Informativa sulla privacy</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Informazioni sulla licenza per .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Raccolta e rifiuto esplicito dei dati di telemetria</A>
+ Nota sull'installazione
+ Durante il processo di installazione verrà eseguito un comando che migliorerà la velocità di ripristino del progetto e abiliterà l'accesso offline. Il completamento del comando richiederà un minuto.
+
+ Se si intende usare .NET 6.0 con Visual Studio, è richiesto Visual Studio 2022 17.0 o versione successiva. <A HREF="https://aka.ms/dotnet6-release-notes">Altre informazioni</A>.
+
+ Facendo clic su Installa, si accettano le condizioni seguenti.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1041/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1041/bundle.wxl
new file mode 100644
index 000000000..036f91f7d
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1041/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName] インストーラー
+ [BUNDLEMONIKER]
+ 取り消しますか?
+ 以前のバージョン
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - ディレクトリ内のバンドル
+の完全なローカル コピーをインストール、修復、アンインストール、または作成します。既定は '/install' です。
+
+/passive | /quiet - 最低限の UI を表示して確認メッセージ
+を表示しないか、UI も確認メッセージも表示しません。既定では、UI およびすべての確認メッセージが表示されます。
+
+/norestart - 再起動の試みをすべて抑制します。既定では、再起動前に UI に確認メッセージが表示されます。
+/log [\[]"log.txt"[\]] - 特定のファイルにログを記録します。既定では、ログ ファイルは %TEMP% に作成されます。
+ 閉じる(&C)
+ ライセンス条項および使用条件に同意する(&A)
+ オプション(&O)
+ インストール(&I)
+ 閉じる(&C)
+
+ 処理中:
+ 初期化しています...
+ キャンセル(&C)
+
+ 修復(&R)
+ アンインストール(&U)
+ 閉じる(&C)
+
+
+
+ 起動(&L)
+ ソフトウェアのインストールを完了するには、コンピューターを再起動する必要があります。
+ 再起動(&R)
+ 閉じる(&C)
+
+
+
+
+ 1 つまたは複数の問題により、セットアップが失敗しました。問題を解決してからセットアップを再試行してください。詳細については、<a href="#">ログ ファイル</a>を参照してください。
+ ソフトウェアのロールバックを完了するには、コンピューターを再起動する必要があります。
+ 再起動(&R)
+ 閉じる(&C)
+
+ 次のアプリケーションは、更新の必要があるファイルを使用しています:
+ アプリケーションを閉じて再起動を試みる。(&A)
+ アプリケーションを終了させない (コンピューターの再起動が必要になります)(&D)
+ OK(&O)
+ キャンセル(&C)
+ インストールが成功しました。
+
+'[DOTNETHOME]' に以下がインストールされました
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET Runtime [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Runtime [ASPNETCOREVERSION]
+ • .NET Windows Desktop Runtime [WINFORMSANDWPFVERSION]
+
+この製品は使用状況データを収集します
+ • 詳細およびオプトアウト https://aka.ms/dotnet-cli-telemetry
+
+リソース
+ • .NET ドキュメント https://aka.ms/dotnet-docs
+ • SDK ドキュメント https://aka.ms/dotnet-sdk-docs
+ • リリース ノート https://aka.ms/dotnet6-release-notes
+ • チュートリアル https://aka.ms/dotnet-tutorials
+
+
+ .Net SDK は、.NET アプリケーションをビルド、実行、テストするために使用されます。複数の言語、エディター、開発者ツールから選択し、ライブラリの大規模なエコシステムを利用して、Web、モバイル、デスクトップ、ゲーム、IoT 用のアプリを作成できます。ぜひご利用ください。
+ .Net の詳細情報
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET ドキュメント</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK ドキュメント</A>
+ <A HREF="https://aka.ms/dev-privacy">プライバシーに関する声明</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">.NET のライセンス情報</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">テレメトリ コレクションおよびオプトアウト</A>
+ インストール メモ
+ コマンドはインストール処理中に実行されるので、プロジェクトの復元速度が向上し、オフラインでアクセスできます。完了するまでに最大 1 分かかります。
+
+ .NET 6.0 を Visual Studio で使用する場合は、Visual Studio 2022 17.0 以降が必要です。<A HREF="https://aka.ms/dotnet6-release-notes">詳細情報</A>。
+
+ [インストール] をクリックすると、次の条項に同意したものと見なされます。
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1042/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1042/bundle.wxl
new file mode 100644
index 000000000..d0c8351c0
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1042/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName] 설치 관리자
+ [BUNDLEMONIKER]
+ 취소하시겠습니까?
+ 이전 버전
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - 디렉터리에 번들의 전체 로컬 복사본을 설치, 복구, 제거 또는
+ 작성합니다. '/install'이 기본값입니다.
+
+/passive | /quiet - 프롬프트 없이 최소 UI를 표시하거나 UI 및
+ 프롬프트를 표시하지 않습니다. 기본적으로 UI와 모든 프롬프트가 표시됩니다.
+
+/norestart - 다시 시작하지 않게 합니다. 기본적으로 UI에서는 다시 시작하기 전에 묻는 메시지를 표시합니다.
+/log [\[]"log.txt"[\]] - 특정 파일에 기록합니다. 기본적으로 로그 파일은 %TEMP%에 만들어집니다.
+ 닫기(&C)
+ 동의함(&A)
+ 옵션(&O)
+ 설치(&I)
+ 닫기(&C)
+
+ 진행 중:
+ 초기화 중...
+ 취소(&C)
+
+ 복구(&R)
+ 제거(&U)
+ 닫기(&C)
+
+
+
+ 시작(&L)
+ 소프트웨어 설치를 완료하려면 컴퓨터를 다시 시작해야 합니다.
+ 다시 시작(&R)
+ 닫기(&C)
+
+
+
+
+ 하나 이상의 문제가 발생하여 설치하지 못했습니다. 문제를 해결한 다음 설치를 다시 시도하십시오. 자세한 내용은 <a href="#">로그 파일</a>을 참조하십시오.
+ 소프트웨어 롤백을 완료하려면 먼저 컴퓨터를 다시 시작해야 합니다.
+ 다시 시작(&R)
+ 닫기(&C)
+
+ 다음의 응용 프로그램이 업데이트해야 할 파일을 사용 중입니다.
+ 응용 프로그램을 닫고 다시 시작합니다(&A).
+ 애플리케이션을 닫지 않습니다(&D). 다시 부팅해야 합니다.
+ 확인(&O)
+ 취소(&C)
+ 설치가 완료되었습니다.
+
+다음이 '[DOTNETHOME]'에 설치되었습니다.
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET 런타임 [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core 런타임 [ASPNETCOREVERSION]
+ • .NET Windows 데스크톱 런타임 [WINFORMSANDWPFVERSION]
+
+이 제품은 사용량 현황 데이터를 수집합니다.
+ • 추가 정보 및 옵트아웃 https://aka.ms/dotnet-cli-telemetry
+
+리소스
+ • .NET 설명서 https://aka.ms/dotnet-docs
+ • SDK 설명서 https://aka.ms/dotnet-sdk-docs
+ • 릴리스 정보 https://aka.ms/dotnet6-release-notes
+ • 자습서 https://aka.ms/dotnet-tutorials
+
+
+ .NET SDK는 .NET 애플리케이션을 빌드, 실행 및 테스트하는 데 사용됩니다. 여러 언어, 편집기 및 개발자 도구 중에서 선택하고 대규모 라이브러리 에코시스템을 활용하여 웹, 모바일, 데스크톱, 게임 및 IoT용 앱을 빌드할 수 있습니다. .NET SDK를 유용하게 사용하시길 바랍니다.
+ .NET에 대한 자세한 정보
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET 설명서</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK 설명서</A>
+ <A HREF="https://aka.ms/dev-privacy">개인정보처리방침</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">.NET에 대한 라이선스 정보</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">원격 분석 수집 및 옵트아웃</A>
+ 설치 정보
+ 프로젝트 복원 속도를 향상하고 오프라인 액세스를 사용할 수 있도록 하는 설치 프로세스 중 명령이 실행됩니다. 완료하는 데 최대 1분이 걸립니다.
+
+ Visual Studio와 함께 .NET 6.0을 사용하려면 Visual Studio 2022 17.0 이상이 필요합니다. <A HREF="https://aka.ms/dotnet6-release-notes">자세한 정보</A>.
+
+ [설치]를 클릭하면 다음 사용 약관에 동의하는 것입니다.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1045/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1045/bundle.wxl
new file mode 100644
index 000000000..95954a100
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1045/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Instalator pakietu [WixBundleName]
+ [BUNDLEMONIKER]
+ Czy na pewno chcesz anulować?
+ Poprzednia wersja
+
+ /install | /repair | /uninstall | /layout [\[]"katalog"[\]] — Instaluje, naprawia, odinstalowuje
+ lub tworzy pełną lokalną kopię pakietu w katalogu. Domyślnie jest używany przełącznik install.
+
+/passive | /quiet — Wyświetla ograniczony interfejs użytkownika bez monitów albo nie wyświetla ani interfejsu użytkownika,
+ ani monitów. Domyślnie jest wyświetlany interfejs użytkownika oraz wszystkie monity.
+
+/norestart — Pomija próby ponownego uruchomienia. Domyślnie interfejs użytkownika wyświetla monit przed ponownym uruchomieniem.
+/log [\[]"log.txt"[\]] — Tworzy dziennik w określonym pliku. Domyślnie plik dziennika jest tworzony w katalogu %TEMP%.
+ &Zamknij
+ &Zgadzam się z postanowieniami licencyjnymi
+ &Opcje
+ &Zainstaluj
+ &Zamknij
+
+ Przetwarzanie:
+ Trwa inicjowanie...
+ &Anuluj
+
+ &Napraw
+ &Odinstaluj
+ &Zamknij
+
+
+
+ &Uruchom
+ Aby zakończyć instalację oprogramowania, należy ponownie uruchomić komputer.
+ &Uruchom ponownie
+ &Zamknij
+
+
+
+
+ Co najmniej jeden problem spowodował niepowodzenie instalacji. Rozwiąż problemy, a następnie ponów próbę instalacji. Aby uzyskać więcej informacji, zobacz <a href="#">plik dziennika</a>.
+ Aby zakończyć wycofywanie oprogramowania, musisz uruchomić ponownie komputer.
+ &Uruchom ponownie
+ &Zamknij
+
+ Następujące aplikacje korzystają z plików, które muszą zostać zaktualizowane:
+ Zamknij &aplikacje i spróbuj je ponownie uruchomić.
+ &Nie zamykaj aplikacji. Będzie konieczne ponowne uruchomienie.
+ &OK
+ &Anuluj
+ Instalacja zakończyła się pomyślnie.
+
+Następujące elementy zostały zainstalowane w: „[DOTNETHOME]”
+ • Zestaw .NET SDK [DOTNETSDKVERSION]
+ • Środowisko uruchomieniowe platformy .NET [DOTNETRUNTIMEVERSION]
+ • Środowisko uruchomieniowe platformy ASP.NET Core [ASPNETCOREVERSION]
+ • Środowisko uruchomieniowe platformy .NET dla komputerów z systemem Windows [WINFORMSANDWPFVERSION]
+
+Ten produkt gromadzi dane dotyczące użycia
+ • Więcej informacji i rezygnacja: https://aka.ms/dotnet-cli-telemetry
+
+Zasoby
+ • Dokumentacja platformy .NET: https://aka.ms/dotnet-docs
+ • Dokumentacja zestawu SDK: https://aka.ms/dotnet-sdk-docs
+ • Informacje o wersji: https://aka.ms/dotnet6-release-notes
+ • Samouczki: https://aka.ms/dotnet-tutorials
+
+
+ Zestaw SDK platformy .NET służy do tworzenia, uruchamiania i testowania aplikacji platformy .NET. Możesz wybierać spośród wielu języków, edytorów i narzędzi deweloperskich oraz korzystać z dużego ekosystemu bibliotek do tworzenia aplikacji dla sieci Web, urządzeń przenośnych, komputerów, środowisk gier i technologii IoT. Mamy nadzieję, że Ci się podoba!
+ Dowiedz się więcej o platformie .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Dokumentacja platformy .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Dokumentacja zestawu SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Zasady zachowania poufności informacji</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Informacje o licencjonowaniu dla platformy .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Zbieranie telemetrii i rezygnacja</A>
+ Uwaga dotycząca instalacji
+ W trakcie procesu instalacji zostanie uruchomione polecenie, które zwiększy szybkość przywracania projektu i umożliwi dostęp do trybu offline. Zajmie to maksymalnie minutę.
+
+ Jeśli planujesz używać platformy .NET 6.0 z programem Visual Studio, wymagany jest program Visual Studio 2022 17.0 lub nowszy. <A HREF="https://aka.ms/dotnet6-release-notes">Dowiedz się więcej</A>.
+
+ Klikając pozycję Zainstaluj, wyrażasz zgodę na następujące warunki.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1046/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1046/bundle.wxl
new file mode 100644
index 000000000..f8c3da0a5
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1046/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Instalador do [WixBundleName]
+ [BUNDLEMONIKER]
+ Tem certeza de que deseja cancelar?
+ Versão anterior
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] – instala, repara, desinstala
+ ou cria uma cópia local completa do pacote no diretório. '/install' é o padrão
+
+/passive | /quiet – exibe a interface do usuário mínima sem nenhum prompt ou não exibe nenhuma interface do usuário e
+ nenhum prompt. Por padrão, a interface do usuário e todos os prompts são exibidos.
+
+/norestart – suprime qualquer tentativa de reiniciar. Por padrão, a interface do usuário perguntará antes de reiniciar.
+/log [\[]"log.txt"[\]] – registra em um arquivo específico. Por padrão, um arquivo de log é criado em %TEMP%.
+ &Fechar
+ Eu &concordo com os termos e condições da licença
+ &Opções
+ &Instalar
+ &Fechar
+
+ Processando:
+ Inicializando...
+ &Cancelar
+
+ &Reparar
+ &Desinstalar
+ &Fechar
+
+
+
+ &Iniciar
+ É necessário reiniciar o computador para concluir a instalação do software.
+ &Reiniciar
+ &Fechar
+
+
+
+
+ Um ou mais problemas causaram falha na instalação. Corrija-os e tente instalar novamente. Para obter mais informações, consulte o <a href="#">arquivo de log</a>.
+ Você deve reiniciar o computador para concluir a reversão do software.
+ &Reiniciar
+ &Fechar
+
+ Os aplicativos a seguir estão usando arquivos que precisam ser atualizados:
+ Feche os &aplicativos e tente reiniciá-los.
+ &Não feche os aplicativos. Será necessária uma reinicialização.
+ &OK
+ &Cancelar
+ A instalação foi bem-sucedida.
+
+O seguinte foi instalado em: '[DOTNETHOME]'
+ • SDK do .NET [DOTNETSDKVERSION]
+ • Runtime do .NET [DOTNETRUNTIMEVERSION]
+ • Runtime do ASP.NET Core [ASPNETCOREVERSION]
+ • Runtime da Área de Trabalho do Windows do .NET [WINFORMSANDWPFVERSION]
+
+Este produto coleta dados de uso
+ • Para obter mais informações ou recusá-lo, acesse https://aka.ms/dotnet-cli-telemetry
+
+Recursos
+ • Documentação do .NET: https://aka.ms/dotnet-docs
+ • Documentação do SDK: https://aka.ms/dotnet-sdk-docs
+ • Notas sobre a Versão: https://aka.ms/dotnet6-release-notes
+ • Tutoriais: https://aka.ms/dotnet-tutorials
+
+
+ O SDK do .NET é usado para compilar, executar e testar aplicativos .NET. Você pode escolher entre vários idiomas, editores e ferramentas de desenvolvedor e aproveitar um grande ecossistema de bibliotecas para criar aplicativos para Web, móveis, área de trabalho, jogos e IoT. Esperamos que você goste!
+ Saiba mais sobre o .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Documentação do .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Documentação do SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Política de Privacidade</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Informações de licenciamento para .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Coleção e recusa de telemetria</A>
+ Nota de instalação
+ Um comando será executado durante o processo de instalação que melhorará a velocidade de restauração do projeto e habilitará o acesso offline. Isso levará até um minuto para ser concluído.
+
+ Se você planeja usar o .NET 6.0 com o Visual Studio, é necessário usar o Visual Studio 2022 17.0 ou mais recente. <A HREF="https://aka.ms/dotnet6-release-notes">Saiba mais</A>.
+
+ Ao clicar em instalar, você concorda com os termos a seguir.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1049/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1049/bundle.wxl
new file mode 100644
index 000000000..afd31da3f
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1049/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Установщик [WixBundleName]
+ [BUNDLEMONIKER]
+ Вы действительно хотите отменить?
+ Предыдущая версия
+
+ /install | /repair | /uninstall | /layout [\[]"каталог"[\]] — установка, восстановление, удаление или
+ создание полной локальной копии пакета в каталоге. По умолчанию — "/install".
+
+/passive | /quiet — отображение минимального пользовательского интерфейса без запросов или работа без пользовательского интерфейса и
+ без запросов. По умолчанию отображаются пользовательский интерфейс и все запросы.
+
+/norestart — подавление всех попыток перезагрузки. По умолчанию в пользовательском интерфейсе перед перезагрузкой отображается запрос.
+/log [\[]"log.txt"[\]] — запись журнала в указанный файл. По умолчанию файл журнала создается в папке %TEMP%.
+ З&акрыть
+ Я &принимаю условия лицензии
+ &Параметры
+ &Установить
+ З&акрыть
+
+ Обработка:
+ Идет инициализация...
+ От&мена
+
+ &Восстановить
+ Уда&лить
+ З&акрыть
+
+
+
+ &Запустить
+ Для завершения установки программного обеспечения нужно перезагрузить компьютер.
+ Переза&грузить
+ З&акрыть
+
+
+
+
+ Одна или несколько проблем вызывали сбой программы установки. Исправьте эти проблемы и попробуйте повторить установку. Дополнительные сведения см. в <a href="#">файле журнала</a>.
+ Необходимо перезагрузить компьютер перед тем, как выполнять откат программного обеспечения.
+ Переза&грузить
+ З&акрыть
+
+ Следующие приложения используют файлы, которые следует обновить:
+ Закрыть &приложения и попытаться перезапустить их.
+ &Не закрывать приложения. Потребуется перезагрузка.
+ О&К
+ От&мена
+ Установка выполнена.
+
+В "[DOTNETHOME]" установлены следующие компоненты:
+ • Пакет SDK для .NET [DOTNETSDKVERSION]
+ • Среда выполнения .NET [DOTNETRUNTIMEVERSION]
+ • Среда выполнения ASP.NET Core [ASPNETCOREVERSION]
+ • Среда выполнения .NET для Windows Desktop [WINFORMSANDWPFVERSION]
+
+Этот продукт собирает данные об использовании.
+ • Чтобы получить дополнительные сведения или отказаться от использования продукта, перейдите на страницу https://aka.ms/dotnet-cli-telemetry
+
+Ресурсы
+ • Документация по .NET: https://aka.ms/dotnet-docs
+ • Документация по SDK: https://aka.ms/dotnet-sdk-docs
+ • Заметки о выпуске: https://aka.ms/dotnet6-release-notes
+ • Учебники: https://aka.ms/dotnet-tutorials
+
+
+ Пакет SDK для .NET используется для сборки, запуска и тестирования приложений .NET. Вы можете выбрать один из нескольких языков, использовать различные редакторы и инструменты для разработчиков, а также воспользоваться преимуществами большой экосистемы библиотек для создания веб-приложений, мобильных и классических приложений, игр и приложений Интернета вещей. Надеемся, вам понравится!
+ Дополнительные сведения о .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Документация по .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Документация по пакету SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Заявление о конфиденциальности</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Сведения о лицензировании .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Сбор данных телеметрии и отказ от использования</A>
+ Примечание по установке
+ В процессе установки будет выполнена команда, которая увеличит скорость восстановления проекта и обеспечит автономный доступ. Выполнение займет до минуты.
+
+ Если вы планируете использовать .NET 6.0 с Visual Studio, требуется Visual Studio 2022 версии 17.0 или более поздней. <A HREF="https://aka.ms/dotnet6-release-notes">Дополнительные сведения</A>.
+
+ Нажимая кнопку "Установить", вы принимаете следующие условия.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/1055/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/1055/bundle.wxl
new file mode 100644
index 000000000..359ac186f
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/1055/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName] Yükleyicisi
+ [BUNDLEMONIKER]
+ İptal etmek istediğinizden emin misiniz?
+ Önceki sürüm
+
+ /install | /repair | /uninstall | /layout [\[]"dizin"[\]] - dizinde bir paketi yükler, onarır, kaldırır ya da
+ paketin tam bir yerel kopyasını oluşturur. Varsayılan '/install' değeridir.
+
+/passive | /quiet - istem olmadan en az düzeyde UI gösterir ya da hiç UI ve
+ istem göstermez. Varsayılan olarak UI ve tüm istemler görüntülenir.
+
+/norestart - yeniden başlama denemelerini engeller. Varsayılan olarak UI yeniden başlatılmadan önce sorar.
+/log [\[]"günlük.txt"[\]] - belirli bir günlük dosyası tutar. Varsayılan olarak %TEMP% içinde bir günlük dosyası oluşturulur.
+ &Kapat
+ &Lisans hüküm ve koşullarını kabul ediyorum
+ &Seçenekler
+ Yü&kle
+ &Kapat
+
+ İşleniyor:
+ Başlatılıyor...
+ &İptal
+
+ &Onar
+ &Kaldır
+ &Kapat
+
+
+
+ &Başlat
+ Yazılım yükleme işlemini tamamlamak için bilgisayarınızı yeniden başlatmanız gerekir.
+ &Yeniden Başlat
+ &Kapat
+
+
+
+
+ En az bir sorun nedeniyle kurulum başarısız oldu. Lütfen bu sorunları düzeltin ve kurulumu yeniden deneyin. Daha fazla bilgi için <a href="#">günlük dosyasına</a> bakın.
+ Yazılımın geri alınmasını tamamlamak için bilgisayarınızı yeniden başlatmanız gerekiyor.
+ &Yeniden Başlat
+ &Kapat
+
+ Şu uygulamalar güncelleştirilmesi gereken dosyaları kullanıyor:
+ &Uygulamaları kapatın ve yeniden başlatmayı deneyin.
+ &Uygulamaları kapatmayın. Sistemi yeniden başlatmanız gerekir.
+ &Tamam
+ &İptal
+ Yükleme başarılı oldu.
+
+Aşağıdakiler şu konumda yüklü: '[DOTNETHOME]'
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET Çalışma Zamanı [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Çalışma Zamanı [ASPNETCOREVERSION]
+ • .NET Windows Masaüstü Çalışma Zamanı [WINFORMSANDWPFVERSION]
+
+Bu ürün, kullanım verilerini toplar
+ • Daha fazla bilgi ve katılmamayı seçmek için bkz. https://aka.ms/dotnet-cli-telemetry
+
+Kaynaklar
+ • .NET Belgeleri https://aka.ms/dotnet-docs
+ • SDK Belgeleri https://aka.ms/dotnet-sdk-docs
+ • Sürüm Notları https://aka.ms/dotnet6-release-notes
+ • Öğreticiler https://aka.ms/dotnet-tutorials
+
+
+ .NET SDK, .NET uygulamalarını derlemek, çalıştırmak ve test etmek için kullanılır. Birden çok dil, düzenleyici ve geliştirici aracı arasından seçim yapabilirsiniz ve web, mobil, masaüstü, oyun ve IoT uygulamaları oluşturmak için büyük bir kitaplık ekosisteminden yararlanabilirsiniz. Beğeneceğinizi umuyoruz!
+ .NET hakkında daha fazla bilgi edinin
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET Belgeleri</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK Belgeleri</A>
+ <A HREF="https://aka.ms/dev-privacy">Gizlilik Bildirimi</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">.NET için Lisans Bilgileri</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetri koleksiyonu ve katılmamayı seçme</A>
+ Yükleme notu
+ Yükleme işlemi sırasında, proje geri yükleme hızını artıran ve çevrimdışı erişimi etkinleştiren bir komut çalıştırılır. Tamamlanması bir dakikanızı alır.
+
+ Visual Studio ile .NET 6.0 kullanmayı planlıyorsanız Visual Studio 2022 17.0 veya üzeri bir sürüm gerekir. <A HREF="https://aka.ms/dotnet6-release-notes">Daha Fazla Bilgi</A>.
+
+ Yükle'ye tıklayarak aşağıdaki koşulları kabul etmiş olursunuz.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/2052/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/2052/bundle.wxl
new file mode 100644
index 000000000..bf2209ebd
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/2052/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ [WixBundleName] 安装程序
+ [BUNDLEMONIKER]
+ 是否确实要取消?
+ 上一版本
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]] - 安装、修复、卸载
+ 目录中的安装包或创建其完整本地副本。Install 为默认选择。
+
+/passive | /quiet - 显示最少的 UI 且无提示,或不显示 UI 且
+ 无提示。默认显示 UI 及全部提示。
+
+/norestart - 禁止任何重新启动。默认在重启前显示提示 UI。
+/log [\[]"log.txt"[\]] - 向特定文件写入日志。默认在 %TEMP% 中创建日志文件。
+ 关闭(&C)
+ 我同意许可条款和条件(&A)
+ 选项(&O)
+ 安装(&I)
+ 关闭(&C)
+
+ 正在处理:
+ 正在初始化…
+ 取消(&C)
+
+ 修复(&R)
+ 卸载(&U)
+ 关闭(&C)
+
+
+
+ 启动(&L)
+ 必须重启计算机才能完成软件安装。
+ 重新启动(&R)
+ 关闭(&C)
+
+
+
+
+ 一个或多个问题导致了安装失败。请修复这些问题,然后重试安装。有关详细信息,请参阅<a href="#">日志文件</a>。
+ 必须重新启动计算机才能完成软件回退。
+ 重新启动(&R)
+ 关闭(&C)
+
+ 以下应用程序正在使用的文件需要更新:
+ 关闭应用程序并尝试重启(&A)。
+ 不关闭应用程序(&D)。需要重启。
+ 确定(&O)
+ 取消(&C)
+ 已成功安装。
+
+下列项安装于: "[DOTNETHOME]"
+ • .NET SDK [DOTNETSDKVERSION]
+ • .NET Runtime [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Runtime [ASPNETCOREVERSION]
+ • .NET Windows Desktop Runtime [WINFORMSANDWPFVERSION]
+
+此产品会收集用法数据
+ • 详细信息和选择退出选项: https://aka.ms/dotnet-cli-telemetry
+
+资源
+ • .NET 文档: https://aka.ms/dotnet-docs
+ • SDK 文档: https://aka.ms/dotnet-sdk-docs
+ • 发行说明: https://aka.ms/dotnet6-release-notes
+ • 教程: https://aka.ms/dotnet-tutorials
+
+
+ .NET SDK 用于生成、运行和测试 .NET 应用程序。有多种语言、编辑器和开发人员工具可供选择,你也可使用由库构成的大型生态系统来构建面向 Web、移动设备、桌面、游戏和 IoT 的应用。希望你喜欢它!
+ 了解有关 .NET 的详细信息
+
+ <A HREF="https://aka.ms/dotnet-docs">.NET 文档</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">SDK 文档</A>
+ <A HREF="https://aka.ms/dev-privacy">隐私声明</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">.NET 的许可信息</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">遥测集合和选择退出选项</A>
+ 安装说明
+ 将在要提升项目还原速度并实现脱机访问的安装进程期间运行命令。此操作最多 1 分钟即可完成。
+
+ 如果打算结合使用 .NET 6.0 和 Visual Studio,需要 Visual Studio 2022 17.0 或更高版本。<A HREF="https://aka.ms/dotnet6-release-notes">了解详细信息</A>。
+
+ 单击“安装”即表示你同意以下条款。
+
diff --git a/src/redist/targets/packaging/windows/clisdk/LCID/3082/bundle.wxl b/src/redist/targets/packaging/windows/clisdk/LCID/3082/bundle.wxl
new file mode 100644
index 000000000..b65e2646c
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/LCID/3082/bundle.wxl
@@ -0,0 +1,82 @@
+
+
+ Instalador de [WixBundleName]
+ [BUNDLEMONIKER]
+ ¿Está seguro de que desea cancelar?
+ Versión anterior
+
+ /install | /repair | /uninstall | /layout [\[]"directory"[\]]: instala, repara, desinstala
+ o crea una copia local completa del paquete en el directorio. "/install" es el valor predeterminado.
+
+/passive | /quiet muestra la interfaz de usuario mínima sin mensajes o no muestra ninguna interfaz de usuario
+ ni mensajes. De forma predeterminada, se muestra la interfaz de usuario y todos los mensajes.
+
+/norestart suprime los intentos de reinicio. De forma predeterminada, la interfaz de usuario avisará antes de un reinicio.
+/log [\[]"log.txt"[\]]: registra en un archivo específico. De forma predeterminada, se crea un archivo de registro en %TEMP%.
+ &Cerrar
+ &Acepto los términos y condiciones de licencia
+ &Opciones
+ &Instalar
+ &Cerrar
+
+ Procesando:
+ Inicializando...
+ &Cancelar
+
+ &Reparar
+ &Desinstalar
+ &Cerrar
+
+
+
+ &Iniciar
+ Debe reiniciar el equipo para finalizar la instalación del software.
+ &Reiniciar
+ &Cerrar
+
+
+
+
+ Error de instalación debido a uno o varios problemas. Corrija los problemas e intente de nuevo la instalación. Para obtener más información, consulte el <a href="#">archivo de registro</a>.
+ Debe reiniciar el equipo para completar la reversión del software.
+ &Reiniciar
+ &Cerrar
+
+ Las siguientes aplicaciones usan archivos que se deben actualizar:
+ Cerrar las &aplicaciones e intentar reiniciarlas.
+ &No cerrar las aplicaciones. Será necesario un reinicio.
+ &Aceptar
+ &Cancelar
+ La instalación se realizó correctamente.
+
+Se instaló lo siguiente en: "[DOTNETHOME]"
+ • SDK de .NET [DOTNETSDKVERSION]
+ • .NET Runtime [DOTNETRUNTIMEVERSION]
+ • ASP.NET Core Runtime [ASPNETCOREVERSION]
+ • .NET Windows Desktop Runtime [WINFORMSANDWPFVERSION]
+
+Este producto recopila datos de uso
+ • Para obtener más información y declinar la participación, visite https://aka.ms/dotnet-cli-telemetry
+
+Recursos
+ • Documentación de .NET https://aka.ms/dotnet-docs
+ • Documentación del SDK https://aka.ms/dotnet-sdk-docs
+ • Notas de la versión https://aka.ms/dotnet6-release-notes
+ • Tutoriales https://aka.ms/dotnet-tutorials
+
+
+ El SDK de .NET se usa para compilar, ejecutar y probar las aplicaciones .NET. Puede elegir entre varios lenguajes, editores y herramientas de desarrollo y aprovechar las ventajas de un amplio ecosistema de bibliotecas para compilar aplicaciones web, móviles, de escritorio, juegos e IoT. Esperamos que lo disfrute.
+ Más información sobre .NET
+
+ <A HREF="https://aka.ms/dotnet-docs">Documentación de .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-docs">Documentación del SDK</A>
+ <A HREF="https://aka.ms/dev-privacy">Declaración de privacidad</A>
+ <A HREF="https://aka.ms/dotnet-license-windows">Información de licencias de .NET</A>
+ <A HREF="https://aka.ms/dotnet-cli-telemetry">Recopilación de telemetría y cómo desactivarla</A>
+ Nota de instalación
+ Se ejecutará un comando durante el proceso de instalación que mejorará la velocidad de restauración del proyecto y permitirá el acceso sin conexión. La operación tardará hasta un minuto en completarse.
+
+ Si tiene previsto usar .NET 6.0 con Visual Studio, se requiere Visual Studio 2022 17.0 o una versión más reciente. <A HREF="https://aka.ms/dotnet6-release-notes">Obtenga más información</A>.
+
+ Al hacer clic en Instalar, acepta los términos siguientes.
+
diff --git a/src/redist/targets/packaging/windows/clisdk/StableFileIdForApphostTransform.xslt b/src/redist/targets/packaging/windows/clisdk/StableFileIdForApphostTransform.xslt
new file mode 100644
index 000000000..dcded1aca
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/StableFileIdForApphostTransform.xslt
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ apphosttemplateapphostexe
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.nuspec
new file mode 100644
index 000000000..4d5b44e81
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ VS.Redist.Common.Net.Core.SDK.MSBuildExtensions
+ 1.0.0
+ VS.Redist.Common.Net.Core.SDK.MSBuildExtensions
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ MSBuild extensions bundled with .NET Core SDK for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.nuspec
new file mode 100644
index 000000000..6b60dae86
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ VS.Redist.Common.Net.Core.SDK.VSTemplateLocator
+ 1.0.0
+ VS.Redist.Common.Net.Core.SDK.VSTemplateLocator
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ MSBuild extensions bundled with .NET Core SDK for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.SdkPlaceholder.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.SdkPlaceholder.nuspec
new file mode 100644
index 000000000..1ebf09719
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.SdkPlaceholder.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ VS.Redist.Common.NetCore.SdkPlaceholder.$ARCH$
+ 1.0.0
+ VS.Redist.Common.NetCore.SdkPlaceholder.$ARCH$
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ .NET Core $MAJOR_MINOR$ SDK ARP Placeholder ($ARCH$) Windows Installer MSI as a .nupkg for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.Templates.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.Templates.nuspec
new file mode 100644
index 000000000..b6bcf5915
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.Templates.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ VS.Redist.Common.NetCore.Templates.$ARCH$.$MAJOR_MINOR$
+ 1.0.0
+ VS.Redist.Common.NetCore.Templates.$ARCH$.$MAJOR_MINOR$
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ .NET Core $MAJOR_MINOR$ Templates Windows Installer MSI as a .nupkg for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.Toolset.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.Toolset.nuspec
new file mode 100644
index 000000000..0291b8034
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Redist.Common.NetCore.Toolset.nuspec
@@ -0,0 +1,18 @@
+
+
+
+ VS.Redist.Common.NetCore.Toolset.$ARCH$
+ 1.0.0
+ VS.Redist.Common.NetCore.Toolset.$ARCH$
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ .NET Core $MAJOR_MINOR$ SDK Toolset ($ARCH$) Windows Installer MSI as a .nupkg for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.cxspec b/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.cxspec
new file mode 100644
index 000000000..c457e5ab7
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.cxspec
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.nuspec
new file mode 100644
index 000000000..bf30cb4e1
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.Resolver.nuspec
@@ -0,0 +1,19 @@
+
+
+
+ VS.Tools.Net.Core.SDK.Resolver
+ 1.0.0
+ VS.Tools.Net.Core.SDK.Resolver
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ .NET Core SDK MSBuild resolver as a .nupkg for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.nuspec b/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.nuspec
new file mode 100644
index 000000000..b986d3440
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/VS.Tools.Net.Core.SDK.nuspec
@@ -0,0 +1,19 @@
+
+
+
+ VS.Tools.Net.Core.SDK.$ARCH$
+ 1.0.0
+ VS.Tools.Net.Core.SDK.$ARCH$
+ Microsoft
+ Microsoft
+ https://www.microsoft.com/net/dotnet_library_license.htm
+ https://github.com/dotnet/core-sdk
+ true
+ .NET Core SDK ($ARCH$) as a .nupkg for internal Visual Studio build consumption
+ © Microsoft Corporation. All rights reserved.
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/bundle.thm b/src/redist/targets/packaging/windows/clisdk/bundle.thm
new file mode 100644
index 000000000..89cf63055
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/bundle.thm
@@ -0,0 +1,96 @@
+
+
+ #(loc.Caption)
+ Segoe UI
+ Segoe UI
+ Segoe UI
+ Segoe UI
+ Segoe UI
+ Segoe UI
+
+ #(loc.Title)
+
+
+
+
+
+ #(loc.HelpHeader)
+ #(loc.HelpText)
+
+
+
+
+
+
+
+ #(loc.WelcomeHeaderMessage)
+ #(loc.WelcomeDescription)
+ #(loc.VisualStudioWarning)
+ #(loc.LicenseAssent)
+ #(loc.PrivacyStatementLink)
+ #(loc.DotNetCLITelemetryLink)
+ #(loc.DotNetEulaLink)
+
+
+
+
+
+
+ #(loc.FilesInUseHeader)
+ #(loc.FilesInUseLabel)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #(loc.ProgressHeader)
+ #(loc.ProgressLabel)
+ #(loc.OverallProgressPackageText)
+
+
+
+
+
+
+
+ #(loc.ModifyHeader)
+
+
+
+
+
+
+
+
+ #(loc.SuccessHeader)
+ #(loc.FirstTimeWelcomeMessage)
+ #(loc.SuccessRepairHeader)
+ #(loc.SuccessUninstallHeader)
+
+ #(loc.SuccessRestartText)
+
+
+
+
+
+
+
+ #(loc.FailureHeader)
+ #(loc.FailureInstallHeader)
+ #(loc.FailureUninstallHeader)
+ #(loc.FailureRepairHeader)
+ #(loc.FailureHyperlinkLogText)
+
+ #(loc.FailureRestartText)
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/bundle.wxs b/src/redist/targets/packaging/windows/clisdk/bundle.wxs
new file mode 100644
index 000000000..ac9261a94
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/bundle.wxs
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+ WixBundleInstalled OR (NOT DOTNETHOME_X64 ~= DOTNETHOME_X86) OR DOTNETHOMESIMILARITYCHECKOVERRIDE
+
+
+
+ WixBundleInstalled OR (NOT DOTNETHOME_ARM64 ~= DOTNETHOME_X86) OR DOTNETHOMESIMILARITYCHECKOVERRIDE
+
+
+
+
+ WixBundleInstalled OR (NOT DOTNETHOME_ARM64 ~= DOTNETHOME_X64) OR (NOT NativeMachine="$(var.NativeMachine_arm64)") OR DOTNETHOMESIMILARITYCHECKOVERRIDE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ eula.rtf
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/dotnet.wxs b/src/redist/targets/packaging/windows/clisdk/dotnet.wxs
new file mode 100644
index 000000000..7d7c21393
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/dotnet.wxs
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+ Installed OR ALLOWMSIINSTALL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NOT Installed
+ NOT Installed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/dotnethome_x64.wxs b/src/redist/targets/packaging/windows/clisdk/dotnethome_x64.wxs
new file mode 100644
index 000000000..d62c71b0e
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/dotnethome_x64.wxs
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VersionNT64 OR
+
+ WIX_NATIVE_MACHINE AND NOT WIX_NATIVE_MACHINE="$(var.InstallerNativeMachine)"
+
+
+
+
+
+
+
+ NON_NATIVE_ARCHITECTURE AND NOT DOTNETHOME
+
+
+
+
\ No newline at end of file
diff --git a/src/redist/targets/packaging/windows/clisdk/dummyeula.rtf b/src/redist/targets/packaging/windows/clisdk/dummyeula.rtf
new file mode 100644
index 000000000..db115770e
Binary files /dev/null and b/src/redist/targets/packaging/windows/clisdk/dummyeula.rtf differ
diff --git a/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1 b/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1
new file mode 100644
index 000000000..4cf3d5697
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/generatebundle.ps1
@@ -0,0 +1,166 @@
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+param(
+ [Parameter(Mandatory=$true)][string]$WorkloadManifestWxsFile,
+ [Parameter(Mandatory=$true)][string]$CLISDKMSIFile,
+ [Parameter(Mandatory=$true)][string]$ASPNETRuntimeWixLibFile,
+ [Parameter(Mandatory=$true)][string]$SharedFxMSIFile,
+ [Parameter(Mandatory=$true)][string]$HostFxrMSIFile,
+ [Parameter(Mandatory=$true)][string]$SharedHostMSIFile,
+ [Parameter(Mandatory=$true)][string]$WinFormsAndWpfMSIFile,
+ [Parameter(Mandatory=$true)][string]$NetCoreAppTargetingPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$NetStandardTargetingPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$NetCoreAppHostPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$AlternateNetCoreAppHostPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$ArmNetCoreAppHostPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$Arm64NetCoreAppHostPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$AspNetTargetingPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$WindowsDesktopTargetingPackMSIFile,
+ [Parameter(Mandatory=$true)][string]$FinalizerExe,
+ [Parameter(Mandatory=$true)][string]$TemplatesMSIFile,
+ [Parameter(Mandatory=$true)][string]$DotnetBundleOutput,
+ [Parameter(Mandatory=$true)][string]$WixRoot,
+ [Parameter(Mandatory=$true)][string]$ProductMoniker,
+ [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
+ [Parameter(Mandatory=$true)][string]$SDKBundleVersion,
+ [Parameter(Mandatory=$true)][string]$DotnetCLINugetVersion,
+ [Parameter(Mandatory=$true)][string]$WindowsDesktopVersion,
+ [Parameter(Mandatory=$true)][string]$UpgradeCode,
+ [Parameter(Mandatory=$true)][string]$DependencyKeyName,
+ [Parameter(Mandatory=$true)][string]$Architecture,
+ [Parameter(Mandatory=$true)][string]$DotNetRuntimeVersion,
+ [Parameter(Mandatory=$true)][string]$AspNetCoreVersion,
+ [Parameter(Mandatory=$true)][string]$SDKProductBandVersion
+)
+
+function RunCandleForBundle
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running candle for bundle.."
+
+ $candleOutput = .\candle.exe -nologo `
+ -dDotnetSrc="$inputDir" `
+ -dMicrosoftEula="$PSScriptRoot\dummyeula.rtf" `
+ -dProductMoniker="$ProductMoniker" `
+ -dBuildVersion="$DotnetMSIVersion" `
+ -dSDKBundleVersion="$SDKBundleVersion" `
+ -dSDKProductBandVersion="$SDKProductBandVersion" `
+ -dNugetVersion="$DotnetCLINugetVersion" `
+ -dCLISDKMsiSourcePath="$CLISDKMSIFile" `
+ -dDependencyKeyName="$DependencyKeyName" `
+ -dUpgradeCode="$UpgradeCode" `
+ -dSharedFXMsiSourcePath="$SharedFxMSIFile" `
+ -dHostFXRMsiSourcePath="$HostFxrMSIFile" `
+ -dSharedHostMsiSourcePath="$SharedHostMSIFile" `
+ -dWinFormsAndWpfMsiSourcePath="$WinFormsAndWpfMSIFile" `
+ -dNetCoreAppTargetingPackMsiSourcePath="$NetCoreAppTargetingPackMSIFile" `
+ -dNetCoreAppHostPackMsiSourcePath="$NetCoreAppHostPackMSIFile" `
+ -dAlternateNetCoreAppHostPackMsiSourcePath="$AlternateNetCoreAppHostPackMSIFile" `
+ -dArmNetCoreAppHostPackMsiSourcePath="$ArmNetCoreAppHostPackMSIFile" `
+ -dArm64NetCoreAppHostPackMsiSourcePath="$Arm64NetCoreAppHostPackMSIFile" `
+ -dNetStandardTargetingPackMsiSourcePath="$NetStandardTargetingPackMSIFile" `
+ -dAspNetTargetingPackMsiSourcePath="$AspNetTargetingPackMSIFile" `
+ -dWindowsDesktopTargetingPackMsiSourcePath="$WindowsDesktopTargetingPackMSIFile" `
+ -dFinalizerExeSourcePath="$FinalizerExe" `
+ -dTemplatesMsiSourcePath="$TemplatesMSIFile" `
+ -dManifestsMsiSourcePath="$ManifestsMSIFile" `
+ -dWinFormsAndWpfVersion="$WindowsDesktopVersion" `
+ -dAdditionalSharedFXMsiSourcePath="$AdditionalSharedFxMSIFile" `
+ -dAdditionalHostFXRMsiSourcePath="$AdditionalHostFxrMSIFile" `
+ -dAdditionalSharedHostMsiSourcePath="$AdditionalSharedHostMSIFile" `
+ -dDotNetRuntimeVersion="$DotNetRuntimeVersion" `
+ -dAspNetCoreVersion="$AspNetCoreVersion" `
+ -dLocalizedContentDirs="$LocalizedContentDirs" `
+ -arch "$Architecture" `
+ -ext WixBalExtension.dll `
+ -ext WixUtilExtension.dll `
+ -ext WixTagExtension.dll `
+ "$AuthWsxRoot\bundle.wxs" "$WorkloadManifestWxsFile"
+
+ Write-Information "Candle output: $candleOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Candle failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+function RunLightForBundle
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ $WorkloadManifestWixobjFile = [System.IO.Path]::GetFileNameWithoutExtension($WorkloadManifestWxsFile) + ".wixobj"
+
+ Write-Information "Running light for bundle.."
+
+ $lightOutput = .\light.exe -nologo `
+ -cultures:en-us `
+ bundle.wixobj `
+ $WorkloadManifestWixobjFile `
+ $ASPNETRuntimeWixlibFile `
+ -ext WixBalExtension.dll `
+ -ext WixUtilExtension.dll `
+ -ext WixTagExtension.dll `
+ -b "$AuthWsxRoot" `
+ -out $DotnetBundleOutput
+
+ Write-Information "Light output: $lightOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Light failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+
+if(!(Test-Path $CLISDKMSIFile))
+{
+ throw "$CLISDKMSIFile not found"
+}
+
+if(!(Test-Path $ASPNETRuntimeWixLibFile))
+{
+ throw "$ASPNETRuntimeWixLibFile not found"
+}
+
+if([string]::IsNullOrEmpty($WixRoot))
+{
+ Exit -1
+}
+
+Write-Information "Creating dotnet Bundle at $DotnetBundleOutput"
+
+$AuthWsxRoot = $PSScriptRoot
+$LocalizedContentDirs = (Get-ChildItem "$AuthWsxRoot\LCID\*\bundle.wxl").Directory.Name -join ';'
+
+if(-Not (RunCandleForBundle))
+{
+ Exit -1
+}
+
+if(-Not (RunLightForBundle))
+{
+ Exit -1
+}
+
+if(!(Test-Path $DotnetBundleOutput))
+{
+ throw "Unable to create the dotnet bundle."
+ Exit -1
+}
+
+Write-Information "Successfully created dotnet bundle - $DotnetBundleOutput"
+
+exit $LastExitCode
diff --git a/src/redist/targets/packaging/windows/clisdk/generatemsi.ps1 b/src/redist/targets/packaging/windows/clisdk/generatemsi.ps1
new file mode 100644
index 000000000..13b4e9636
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/generatemsi.ps1
@@ -0,0 +1,164 @@
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+param(
+ [Parameter(Mandatory=$true)][string]$inputDir,
+ [Parameter(Mandatory=$true)][string]$DotnetMSIOutput,
+ [Parameter(Mandatory=$true)][string]$WixRoot,
+ [Parameter(Mandatory=$true)][string]$ProductMoniker,
+ [Parameter(Mandatory=$true)][string]$SdkFeatureBandVersion,
+ [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
+ [Parameter(Mandatory=$true)][string]$SDKBundleVersion,
+ [Parameter(Mandatory=$true)][string]$DotnetCLINugetVersion,
+ [Parameter(Mandatory=$true)][string]$UpgradeCode,
+ [Parameter(Mandatory=$true)][string]$DependencyKeyName,
+ [Parameter(Mandatory=$true)][string]$Architecture,
+ [Parameter(Mandatory=$true)][string]$StableFileIdForApphostTransform
+)
+
+$InstallFileswsx = ".\install-files.wxs"
+$InstallFilesWixobj = "install-files.wixobj"
+
+function RunHeat
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running heat.."
+
+ # -t $StableFileIdForApphostTransform to avoid sign check baseline apphost.exe name changes every build. Sign check uses File Id in MSI as exception list name.
+ # Template apphost.exe get a new "File Id" in msi different every time (since File Id is generated according to file
+ # path, and file path has version number)
+ # use XSLT transform to match the file path contains "AppHostTemplate\apphost.exe" and give it the same ID all the time.
+
+ $heatOutput = .\heat.exe dir `"$inputDir`" -template fragment `
+ -sreg -ag `
+ -var var.DotnetSrc `
+ -cg InstallFiles `
+ -srd `
+ -dr DOTNETHOME `
+ -t $StableFileIdForApphostTransform `
+ -out install-files.wxs
+
+ Write-Information "Heat output: $heatOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Heat failed with exit code $LastExitCode."
+ }
+
+ popd
+ Write-Information "RunHeat result: $result"
+ return $result
+}
+
+function RunCandle
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running candle.."
+
+ $candleOutput = .\candle.exe -nologo `
+ -dDotnetSrc="$inputDir" `
+ -dMicrosoftEula="$PSScriptRoot\dummyeula.rtf" `
+ -dProductMoniker="$ProductMoniker" `
+ -dBuildVersion="$DotnetMSIVersion" `
+ -dSdkFeatureBandVersion="$SdkFeatureBandVersion" `
+ -dSDKBundleVersion="$SDKBundleVersion" `
+ -dNugetVersion="$DotnetCLINugetVersion" `
+ -dUpgradeCode="$UpgradeCode" `
+ -dDependencyKeyName="$DependencyKeyName" `
+ -arch "$Architecture" `
+ -ext WixDependencyExtension.dll `
+ "$PSScriptRoot\dotnet.wxs" `
+ "$PSScriptRoot\dotnethome_x64.wxs" `
+ "$PSScriptRoot\provider.wxs" `
+ "$PSScriptRoot\registrykeys.wxs" `
+ $InstallFileswsx
+
+ Write-Information "Candle output: $candleOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Candle failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+function RunLight
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running light.."
+ $CabCache = Join-Path $WixRoot "cabcache"
+
+ $lightOutput = .\light.exe -nologo -ext WixUIExtension -ext WixDependencyExtension -ext WixUtilExtension `
+ -cultures:en-us `
+ dotnet.wixobj `
+ dotnethome_x64.wixobj `
+ provider.wixobj `
+ registrykeys.wixobj `
+ $InstallFilesWixobj `
+ -b "$inputDir" `
+ -b "$PSScriptRoot" `
+ -reusecab `
+ -cc "$CabCache" `
+ -out $DotnetMSIOutput
+
+ Write-Information "Light output: $lightOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Light failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+if(!(Test-Path $inputDir))
+{
+ throw "$inputDir not found"
+}
+
+Write-Information "Creating dotnet MSI at $DotnetMSIOutput"
+
+if([string]::IsNullOrEmpty($WixRoot))
+{
+ Exit -1
+}
+
+if(-Not (RunHeat))
+{
+ Write-Information "Heat failed"
+ Exit -1
+}
+
+if(-Not (RunCandle))
+{
+ Write-Information "Candle failed"
+ Exit -1
+}
+
+if(-Not (RunLight))
+{
+ Write-Information "Light failed"
+ Exit -1
+}
+
+if(!(Test-Path $DotnetMSIOutput))
+{
+ throw "Unable to create the dotnet msi."
+ Exit -1
+}
+
+Write-Information "Successfully created dotnet MSI - $DotnetMSIOutput"
+
+exit $LastExitCode
diff --git a/src/redist/targets/packaging/windows/clisdk/generatenupkg.ps1 b/src/redist/targets/packaging/windows/clisdk/generatenupkg.ps1
new file mode 100644
index 000000000..e52b9d11e
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/generatenupkg.ps1
@@ -0,0 +1,44 @@
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+param(
+ [Parameter(Mandatory=$true)][string]$BinDir,
+ [Parameter(Mandatory=$true)][string]$ContentPath,
+ [Parameter(Mandatory=$true)][string]$NugetVersion,
+ [Parameter(Mandatory=$true)][string]$NuspecFile,
+ [Parameter(Mandatory=$true)][string]$NupkgFile,
+ [Parameter(Mandatory=$false)][string]$Architecture,
+ [Parameter(Mandatory=$false)][string]$MmVersion
+)
+
+[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bOR [Net.SecurityProtocolType]::Tls12
+
+$NuGetDir = Join-Path $BinDir "nuget"
+$NuGetExe = Join-Path $NuGetDir "nuget.exe"
+$OutputDirectory = [System.IO.Path]::GetDirectoryName($NupkgFile)
+$ContentPath = [System.IO.Path]::GetFullPath($ContentPath)
+if ($CabPath) {
+ $CabPath = [System.IO.Path]::GetFullPath($CabPath)
+}
+
+if (-not (Test-Path $NuGetDir)) {
+ New-Item -ItemType Directory -Force -Path $NuGetDir | Out-Null
+}
+
+if (-not (Test-Path $NuGetExe)) {
+ # Using 3.5.0 to workaround https://github.com/NuGet/Home/issues/5016
+ Write-Output "Downloading nuget.exe to $NuGetExe"
+ wget https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe -OutFile $NuGetExe
+}
+
+if (-not (Test-Path $NuGetExe)) {
+ Write-Error "Could not download nuget.exe"
+ Exit 1
+}
+
+if (Test-Path $NupkgFile) {
+ Remove-Item -Force $NupkgFile
+}
+
+& $NuGetExe pack $NuspecFile -Version $NugetVersion -OutputDirectory $OutputDirectory -NoDefaultExcludes -NoPackageAnalysis -Properties PAYLOAD_FILES=$ContentPath`;ARCH=$Architecture`;MAJOR_MINOR=$MmVersion
+Exit $LastExitCode
diff --git a/src/redist/targets/packaging/windows/clisdk/generatesdkplaceholdermsi.ps1 b/src/redist/targets/packaging/windows/clisdk/generatesdkplaceholdermsi.ps1
new file mode 100644
index 000000000..4461b0cc9
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/generatesdkplaceholdermsi.ps1
@@ -0,0 +1,105 @@
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+param(
+ [Parameter(Mandatory=$true)][string]$DotnetMSIOutput,
+ [Parameter(Mandatory=$true)][string]$WixRoot,
+ [Parameter(Mandatory=$true)][string]$ProductMoniker,
+ [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
+ [Parameter(Mandatory=$true)][string]$SDKBundleVersion,
+ [Parameter(Mandatory=$true)][string]$DotnetCLINugetVersion,
+ [Parameter(Mandatory=$true)][string]$UpgradeCode,
+ [Parameter(Mandatory=$true)][string]$DependencyKeyName,
+ [Parameter(Mandatory=$true)][string]$Architecture
+)
+
+function RunCandle
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running candle.."
+
+ $candleOutput = .\candle.exe -nologo `
+ -dDotnetSrc="$inputDir" `
+ -dMicrosoftEula="$PSScriptRoot\dummyeula.rtf" `
+ -dProductMoniker="$ProductMoniker" `
+ -dBuildVersion="$DotnetMSIVersion" `
+ -dSDKBundleVersion="$SDKBundleVersion" `
+ -dNugetVersion="$DotnetCLINugetVersion" `
+ -dUpgradeCode="$UpgradeCode" `
+ -dDependencyKeyName="$DependencyKeyName" `
+ -arch "$Architecture" `
+ -ext WixDependencyExtension.dll `
+ "$PSScriptRoot\sdkplaceholder.wxs" `
+ "$PSScriptRoot\provider.wxs"
+
+ Write-Information "Candle output: $candleOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Candle failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+function RunLight
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running light.."
+ $CabCache = Join-Path $WixRoot "cabcache"
+
+ $lightOutput = .\light.exe -nologo -ext WixUIExtension -ext WixDependencyExtension -ext WixUtilExtension `
+ -cultures:en-us `
+ sdkplaceholder.wixobj `
+ provider.wixobj `
+ -b "$PSScriptRoot" `
+ -reusecab `
+ -cc "$CabCache" `
+ -out $DotnetMSIOutput
+
+ Write-Information "Light output: $lightOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Light failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+Write-Information "Creating SdkPlaceholder MSI at $DotnetMSIOutput"
+
+if([string]::IsNullOrEmpty($WixRoot))
+{
+ Exit -1
+}
+
+if(-Not (RunCandle))
+{
+ Write-Information "Candle failed"
+ Exit -1
+}
+
+if(-Not (RunLight))
+{
+ Write-Information "Light failed"
+ Exit -1
+}
+
+if(!(Test-Path $DotnetMSIOutput))
+{
+ throw "Unable to create the SdkPlaceholder MSI."
+ Exit -1
+}
+
+Write-Information "Successfully created SdkPlaceholder MSI - $DotnetMSIOutput"
+
+exit $LastExitCode
diff --git a/src/redist/targets/packaging/windows/clisdk/generatetemplatesmsi.ps1 b/src/redist/targets/packaging/windows/clisdk/generatetemplatesmsi.ps1
new file mode 100644
index 000000000..ecbb68ba6
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/generatetemplatesmsi.ps1
@@ -0,0 +1,153 @@
+# Copyright (c) .NET Foundation and contributors. All rights reserved.
+# Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+param(
+ [Parameter(Mandatory=$true)][string]$inputDir,
+ [Parameter(Mandatory=$true)][string]$DotnetMSIOutput,
+ [Parameter(Mandatory=$true)][string]$WixRoot,
+ [Parameter(Mandatory=$true)][string]$ProductMoniker,
+ [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
+ [Parameter(Mandatory=$true)][string]$SDKBundleVersion,
+ [Parameter(Mandatory=$true)][string]$DotnetCLINugetVersion,
+ [Parameter(Mandatory=$true)][string]$UpgradeCode,
+ [Parameter(Mandatory=$true)][string]$DependencyKeyName,
+ [Parameter(Mandatory=$true)][string]$Architecture
+)
+
+$InstallFileswsx = ".\template-install-files.wxs"
+$InstallFilesWixobj = "template-install-files.wixobj"
+
+function RunHeat
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running heat.."
+
+ $heatOutput = .\heat.exe dir `"$inputDir`" -template fragment `
+ -sreg -ag `
+ -var var.DotnetSrc `
+ -cg InstallFiles `
+ -srd `
+ -dr DOTNETHOME `
+ -out template-install-files.wxs
+
+ Write-Information "Heat output: $heatOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Heat failed with exit code $LastExitCode."
+ }
+
+ popd
+ Write-Information "RunHeat result: $result"
+ return $result
+}
+
+function RunCandle
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running candle.."
+
+ $candleOutput = .\candle.exe -nologo `
+ -dDotnetSrc="$inputDir" `
+ -dMicrosoftEula="$PSScriptRoot\dummyeula.rtf" `
+ -dProductMoniker="$ProductMoniker" `
+ -dBuildVersion="$DotnetMSIVersion" `
+ -dSDKBundleVersion="$SDKBundleVersion" `
+ -dNugetVersion="$DotnetCLINugetVersion" `
+ -dUpgradeCode="$UpgradeCode" `
+ -dDependencyKeyName="$DependencyKeyName" `
+ -arch "$Architecture" `
+ -ext WixDependencyExtension.dll `
+ "$PSScriptRoot\dotnethome_x64.wxs" `
+ "$PSScriptRoot\templates.wxs" `
+ "$PSScriptRoot\provider.wxs" `
+ $InstallFileswsx
+
+ Write-Information "Candle output: $candleOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Candle failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+function RunLight
+{
+ $result = $true
+ pushd "$WixRoot"
+
+ Write-Information "Running light.."
+ $CabCache = Join-Path $WixRoot "cabcache"
+
+ $lightOutput = .\light.exe -nologo -ext WixUIExtension -ext WixDependencyExtension -ext WixUtilExtension `
+ -cultures:en-us `
+ dotnethome_x64.wixobj `
+ templates.wixobj `
+ provider.wixobj `
+ $InstallFilesWixobj `
+ -b "$inputDir" `
+ -b "$PSScriptRoot" `
+ -reusecab `
+ -cc "$CabCache" `
+ -out $DotnetMSIOutput
+
+ Write-Information "Light output: $lightOutput"
+
+ if($LastExitCode -ne 0)
+ {
+ $result = $false
+ Write-Information "Light failed with exit code $LastExitCode."
+ }
+
+ popd
+ return $result
+}
+
+if(!(Test-Path $inputDir))
+{
+ throw "$inputDir not found"
+}
+
+Write-Information "Creating templates MSI at $DotnetMSIOutput"
+
+if([string]::IsNullOrEmpty($WixRoot))
+{
+ Exit -1
+}
+
+if(-Not (RunHeat))
+{
+ Write-Information "Heat failed"
+ Exit -1
+}
+
+if(-Not (RunCandle))
+{
+ Write-Information "Candle failed"
+ Exit -1
+}
+
+if(-Not (RunLight))
+{
+ Write-Information "Light failed"
+ Exit -1
+}
+
+if(!(Test-Path $DotnetMSIOutput))
+{
+ throw "Unable to create the templates MSI."
+ Exit -1
+}
+
+Write-Information "Successfully created templates MSI - $DotnetMSIOutput"
+
+exit $LastExitCode
diff --git a/src/redist/targets/packaging/windows/clisdk/manifests.wxs b/src/redist/targets/packaging/windows/clisdk/manifests.wxs
new file mode 100644
index 000000000..27a3017d0
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/manifests.wxs
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+ Installed OR ALLOWMSIINSTALL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/msi b/src/redist/targets/packaging/windows/clisdk/msi
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/redist/targets/packaging/windows/clisdk/msi.ico b/src/redist/targets/packaging/windows/clisdk/msi.ico
new file mode 100644
index 000000000..c2e2717c2
Binary files /dev/null and b/src/redist/targets/packaging/windows/clisdk/msi.ico differ
diff --git a/src/redist/targets/packaging/windows/clisdk/provider.wxs b/src/redist/targets/packaging/windows/clisdk/provider.wxs
new file mode 100644
index 000000000..e1711ec76
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/provider.wxs
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/registrykeys.wxs b/src/redist/targets/packaging/windows/clisdk/registrykeys.wxs
new file mode 100644
index 000000000..f47cfca05
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/registrykeys.wxs
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/sdkplaceholder.wxs b/src/redist/targets/packaging/windows/clisdk/sdkplaceholder.wxs
new file mode 100644
index 000000000..1576a03bd
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/sdkplaceholder.wxs
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ Installed OR ALLOWMSIINSTALL
+
+
+
+ NOT Installed OR ALLOWMSIUNINSTALL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/templates.wxs b/src/redist/targets/packaging/windows/clisdk/templates.wxs
new file mode 100644
index 000000000..27a3017d0
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/templates.wxs
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+ Installed OR ALLOWMSIINSTALL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/redist/targets/packaging/windows/clisdk/variables.wxi b/src/redist/targets/packaging/windows/clisdk/variables.wxi
new file mode 100644
index 000000000..aa574750b
--- /dev/null
+++ b/src/redist/targets/packaging/windows/clisdk/variables.wxi
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml b/src/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml
new file mode 100755
index 000000000..b9d959349
--- /dev/null
+++ b/src/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml
@@ -0,0 +1,40 @@
+name: dotnet-sdk
+version: 3.1.201
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+architectures:
+ - build-on: [amd64]
+ run-on: [armhf]
+
+base: core
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/ccbcbf70-9911-40b1-a8cf-e018a13e720e/03c0621c6510f9c6f4cca6951f2cc1a4/dotnet-sdk-3.1.201-linux-arm.tar.gz
+ source-checksum: sha512/f37d0e55c9f593c6951bea5a6bb1ea3194486956efe08a2a0f266b419d912cdcbf4ac279358976f0bfa1fe560c333ca5d5437f8e8c718bb5963991e4395e0cd7
+ stage-packages:
+ - libicu55
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu4
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml b/src/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml
new file mode 100755
index 000000000..c9e2ab7ef
--- /dev/null
+++ b/src/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml
@@ -0,0 +1,40 @@
+name: dotnet-sdk
+version: 5.0.100-preview.2.20176.6
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+architectures:
+ - build-on: [amd64]
+ run-on: [armhf]
+
+base: core
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/f87574ee-c128-4e91-b436-68c99d801daf/b296bea9d987a4edaa71df47cd2e7aca/dotnet-sdk-5.0.100-preview.2.20176.6-linux-arm64.tar.gz
+ source-checksum: sha512/53cbf213e2e97b909b256d931f061178f26e5647424f144266d4af2e12d6443ef7398207a8f4e6f220c61db9ce49de3dc09d88417288a6a61d9b05e1def6b279
+ stage-packages:
+ - libicu55
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu4
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml b/src/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml
new file mode 100755
index 000000000..94a9af147
--- /dev/null
+++ b/src/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml
@@ -0,0 +1,40 @@
+name: dotnet-sdk
+version: 5.0.100-preview.2.20176.6
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+architectures:
+ - build-on: [amd64]
+ run-on: [arm64]
+
+base: core18
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/f87574ee-c128-4e91-b436-68c99d801daf/b296bea9d987a4edaa71df47cd2e7aca/dotnet-sdk-5.0.100-preview.2.20176.6-linux-arm64.tar.gz
+ source-checksum: sha512/53cbf213e2e97b909b256d931f061178f26e5647424f144266d4af2e12d6443ef7398207a8f4e6f220c61db9ce49de3dc09d88417288a6a61d9b05e1def6b279
+ stage-packages:
+ - libicu60
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu6
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml b/src/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml
new file mode 100755
index 000000000..ee58bc736
--- /dev/null
+++ b/src/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml
@@ -0,0 +1,37 @@
+name: dotnet-sdk
+version: 2.1.815
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+base: core18
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/7fba29f6-aac9-4b53-a5f9-9b421bec6288/70ac39be0282331d18b535f64ea5f40a/dotnet-sdk-2.1.815-linux-x64.tar.gz
+ source-checksum: sha512/e998ccb8b4e47a727141e85823637f2030df556d3056aadbdfbce4eca823fe4759ca0e0b2edaa6f83dd5b4cbb8a3b0046ff2c9eae96832e71dc6c13855998148
+ stage-packages:
+ - libicu60
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu6
+ - lldb
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml b/src/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml
new file mode 100755
index 000000000..1e6c874c9
--- /dev/null
+++ b/src/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml
@@ -0,0 +1,36 @@
+name: dotnet-sdk
+version: 3.1.408
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+base: core18
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/2054b462-43da-4c61-9e2d-d02167c71c40/a8be03062d9d770c8025c7de47ca366d/dotnet-sdk-3.1.408-linux-x64.tar.gz
+ source-checksum: sha512/5e2c378addf337c1b7e44583718672e0791235150630f0b613353c8597342dcaae3b7c412b17d5e6d93d87b5708a6ca2dc16ff6e6c5a2101b224d24e6a5c4e7a
+ stage-packages:
+ - libicu60
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu6
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml b/src/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml
new file mode 100755
index 000000000..3ddf457ba
--- /dev/null
+++ b/src/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml
@@ -0,0 +1,36 @@
+name: dotnet-sdk
+version: 5.0.202
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+base: core18
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/5f0f07ab-cd9a-4498-a9f7-67d90d582180/2a3db6698751e6cbb93ec244cb81cc5f/dotnet-sdk-5.0.202-linux-x64.tar.gz
+ source-checksum: sha512/01ed59f236184987405673d24940d55ce29d830e7dbbc19556fdc03893039e6046712de6f901dc9911047a0dee4fd15319b7e94f8a31df6b981fa35bd93d9838
+ stage-packages:
+ - libicu60
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu6
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/dotnet-sdk-6.0/snap/snapcraft.yaml b/src/snaps/dotnet-sdk-6.0/snap/snapcraft.yaml
new file mode 100755
index 000000000..bfbe2c9a4
--- /dev/null
+++ b/src/snaps/dotnet-sdk-6.0/snap/snapcraft.yaml
@@ -0,0 +1,36 @@
+name: dotnet-sdk
+version: 6.0.100-preview.2.21155.3
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: stable
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+base: core18
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: https://download.visualstudio.microsoft.com/download/pr/25c7e38e-0a6a-4d66-ac4e-b550a44b8a98/49128be84b903799259e7bebe8e9d969/dotnet-sdk-6.0.100-preview.2.21155.3-linux-x64.tar.gz
+ source-checksum: sha512/90d9b6070f7732dcf75f5a09a4f10f9b23c835a3bb144e0c3f1fa451cadd3d49c9781973b180f70a4d2798358a7c00f3c0b9b3bf35326fe4c94e470e84ac8c35
+ stage-packages:
+ - libicu60
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu6
+
+ runtime-wrapper:
+ plugin: dump
+ source: .
+
diff --git a/src/snaps/dotnet-sdk/snap/snapcraft.yaml b/src/snaps/dotnet-sdk/snap/snapcraft.yaml
new file mode 100755
index 000000000..8f9c7cc3f
--- /dev/null
+++ b/src/snaps/dotnet-sdk/snap/snapcraft.yaml
@@ -0,0 +1,36 @@
+name: dotnet-sdk
+version: $(DOTNET_SDK_VERSION)
+summary: Cross-Platform .NET Core SDK
+description: |
+ .NET Core SDK. https://dot.net/core.
+
+grade: devel
+confinement: classic
+
+apps:
+ dotnet:
+ command: dotnet
+
+base: core18
+
+parts:
+ dotnet-sdk:
+ plugin: dump
+ source: $(SOURCE_TARGZ)
+ source-checksum: sha512/$(SOURCE_TARGZ_SHA)
+ stage-packages:
+ - libicu60
+ - libssl1.0.0
+ - libcurl3
+ - libgssapi-krb5-2
+ - libstdc++6
+ - zlib1g
+ - libgcc1
+ - lldb
+ - libunwind8
+ - libtinfo5
+ - liblttng-ust0
+ - liburcu6
+ runtime-wrapper:
+ plugin: dump
+ source: .
diff --git a/test/Directory.Build.props b/test/Directory.Build.props
new file mode 100644
index 000000000..26d486322
--- /dev/null
+++ b/test/Directory.Build.props
@@ -0,0 +1,7 @@
+
+
+
+
+ true
+
+
diff --git a/test/EndToEnd/EndToEnd.Tests.csproj b/test/EndToEnd/EndToEnd.Tests.csproj
new file mode 100644
index 000000000..278ac08fd
--- /dev/null
+++ b/test/EndToEnd/EndToEnd.Tests.csproj
@@ -0,0 +1,26 @@
+
+
+ $(CoreSdkTargetFramework)
+ $(DefineConstants);LINUX_PORTABLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
diff --git a/test/EndToEnd/GivenDotNetLinuxInstallers.cs b/test/EndToEnd/GivenDotNetLinuxInstallers.cs
new file mode 100644
index 000000000..4968f0221
--- /dev/null
+++ b/test/EndToEnd/GivenDotNetLinuxInstallers.cs
@@ -0,0 +1,83 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+using System.IO;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+
+namespace Microsoft.DotNet.Tests.EndToEnd
+{
+ public class GivenDotNetLinuxInstallers
+ {
+ [Fact]
+ public void ItHasExpectedDependencies()
+ {
+ var installerFile = Environment.GetEnvironmentVariable("SDK_INSTALLER_FILE");
+ if (string.IsNullOrEmpty(installerFile))
+ {
+ return;
+ }
+
+ var ext = Path.GetExtension(installerFile);
+ switch (ext)
+ {
+ case ".deb":
+ DebianPackageHasDependencyOnAspNetCoreStoreAndDotnetRuntime(installerFile);
+ return;
+ case ".rpm":
+ RpmPackageHasDependencyOnAspNetCoreStoreAndDotnetRuntime(installerFile);
+ return;
+ }
+ }
+
+ private void DebianPackageHasDependencyOnAspNetCoreStoreAndDotnetRuntime(string installerFile)
+ {
+ // Example output:
+
+ // $ dpkg --info dotnet-sdk-2.1.105-ubuntu-x64.deb
+
+ // new debian package, version 2.0.
+ // size 75660448 bytes: control archive=29107 bytes.
+ // 717 bytes, 11 lines control
+ // 123707 bytes, 1004 lines md5sums
+ // 1710 bytes, 28 lines * postinst #!/usr/bin/env
+ // Package: dotnet-sdk-2.1.104
+ // Version: 2.1.104-1
+ // Architecture: amd64
+ // Maintainer: Microsoft
+ // Installed-Size: 201119
+ // Depends: dotnet-runtime-2.0.6, aspnetcore-store-2.0.6
+ // Section: devel
+ // Priority: standard
+ // Homepage: https://dotnet.github.io/core
+ // Description: Microsoft .NET Core SDK - 2.1.104
+
+ new TestCommand("dpkg")
+ .ExecuteWithCapturedOutput($"--info {installerFile}")
+ .Should().Pass()
+ .And.HaveStdOutMatching(@"Depends:.*\s?dotnet-runtime-\d+(\.\d+){2}")
+ .And.HaveStdOutMatching(@"Depends:.*\s?aspnetcore-store-\d+(\.\d+){2}");
+ }
+
+ private void RpmPackageHasDependencyOnAspNetCoreStoreAndDotnetRuntime(string installerFile)
+ {
+ // Example output:
+
+ // $ rpm -qpR dotnet-sdk-2.1.105-rhel-x64.rpm
+
+ // dotnet-runtime-2.0.7 >= 2.0.7
+ // aspnetcore-store-2.0.7 >= 2.0.7
+ // /bin/sh
+ // /bin/sh
+ // rpmlib(PayloadFilesHavePrefix) <= 4.0-1
+ // rpmlib(CompressedFileNames) <= 3.0.4-1
+
+ new TestCommand("rpm")
+ .ExecuteWithCapturedOutput($"-qpR {installerFile}")
+ .Should().Pass()
+ .And.HaveStdOutMatching(@"dotnet-runtime-\d+(\.\d+){2} >= \d+(\.\d+){2}")
+ .And.HaveStdOutMatching(@"aspnetcore-store-\d+(\.\d+){2} >= \d+(\.\d+){2}");
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenDotnetUsesDotnetTools.cs b/test/EndToEnd/GivenDotnetUsesDotnetTools.cs
new file mode 100644
index 000000000..3e32c4a45
--- /dev/null
+++ b/test/EndToEnd/GivenDotnetUsesDotnetTools.cs
@@ -0,0 +1,17 @@
+using FluentAssertions;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+
+namespace EndToEnd
+{
+ public class GivenDotnetUsesDotnetTools : TestBase
+ {
+ [RequiresAspNetCore]
+ public void ThenOneDotnetToolsCanBeCalled()
+ {
+ new DotnetCommand()
+ .ExecuteWithCapturedOutput("dev-certs --help")
+ .Should().Pass();
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenFrameworkDependentApps.cs b/test/EndToEnd/GivenFrameworkDependentApps.cs
new file mode 100644
index 000000000..80a955657
--- /dev/null
+++ b/test/EndToEnd/GivenFrameworkDependentApps.cs
@@ -0,0 +1,125 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+using System.IO;
+using System.Linq;
+using FluentAssertions;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using NuGet.ProjectModel;
+using NuGet.Versioning;
+using Xunit;
+
+namespace EndToEnd
+{
+ public class GivenFrameworkDependentApps : TestBase
+ {
+ [Theory]
+ [ClassData(typeof(SupportedNetCoreAppVersions))]
+ public void ItDoesNotRollForwardToTheLatestVersionOfNetCore(string minorVersion)
+ {
+ if (minorVersion == "3.0" || minorVersion == "3.1" || minorVersion == "5.0" || minorVersion == "6.0")
+ {
+ // https://github.com/dotnet/core-sdk/issues/621
+ return;
+ }
+ ItDoesNotRollForwardToTheLatestVersion(TestProjectCreator.NETCorePackageName, minorVersion);
+ }
+
+ [Theory]
+ [ClassData(typeof(SupportedAspNetCoreVersions))]
+ public void ItDoesNotRollForwardToTheLatestVersionOfAspNetCoreApp(string minorVersion)
+ {
+ if (minorVersion == "3.0" || minorVersion == "3.1" || minorVersion == "5.0" || minorVersion == "6.0")
+ {
+ // https://github.com/dotnet/core-sdk/issues/621
+ return;
+ }
+ ItDoesNotRollForwardToTheLatestVersion(TestProjectCreator.AspNetCoreAppPackageName, minorVersion);
+ }
+
+ [Theory]
+ [ClassData(typeof(SupportedAspNetCoreAllVersions))]
+ public void ItDoesNotRollForwardToTheLatestVersionOfAspNetCoreAll(string minorVersion)
+ {
+ ItDoesNotRollForwardToTheLatestVersion(TestProjectCreator.AspNetCoreAllPackageName, minorVersion);
+ }
+
+ internal void ItDoesNotRollForwardToTheLatestVersion(string packageName, string minorVersion)
+ {
+ // https://github.com/NuGet/Home/issues/8571
+ #if LINUX_PORTABLE
+ return;
+ #else
+ var testProjectCreator = new TestProjectCreator()
+ {
+ PackageName = packageName,
+ MinorVersion = minorVersion,
+ };
+
+ var _testInstance = testProjectCreator.Create();
+
+ string projectDirectory = _testInstance.Root.FullName;
+
+ string projectPath = Path.Combine(projectDirectory, "TestAppSimple.csproj");
+
+ // Get the resolved version of .NET Core
+ new RestoreCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ string assetsFilePath = Path.Combine(projectDirectory, "obj", "project.assets.json");
+ var assetsFile = new LockFileFormat().Read(assetsFilePath);
+
+ var versionInAssertsJson = GetPackageVersion(assetsFile, packageName);
+ versionInAssertsJson.Should().NotBeNull();
+
+ if (versionInAssertsJson.IsPrerelease && versionInAssertsJson.Patch == 0)
+ {
+ // if the bundled version is, for example, a prerelease of
+ // .NET Core 2.1.1, that we don't roll forward to that prerelease
+ // version for framework-dependent deployments.
+ return;
+ }
+
+ versionInAssertsJson.ToNormalizedString().Should().BeEquivalentTo(GetExpectedVersion(packageName, minorVersion));
+ #endif
+ }
+
+ private static NuGetVersion GetPackageVersion(LockFile lockFile, string packageName)
+ {
+ return lockFile?.Targets?.SingleOrDefault(t => t.RuntimeIdentifier == null)
+ ?.Libraries?.SingleOrDefault(l =>
+ string.Compare(l.Name, packageName, StringComparison.CurrentCultureIgnoreCase) == 0)
+ ?.Version;
+ }
+
+ public string GetExpectedVersion(string packageName, string minorVersion)
+ {
+ if (minorVersion.StartsWith("1.0"))
+ {
+ return "1.0.5"; // special case for 1.0
+ }
+ else if (minorVersion.StartsWith("1.1"))
+ {
+ return "1.1.2"; // special case for 1.1
+ }
+ else
+ {
+ // ASP.NET 2.1.0 packages had exact version dependencies, which was problematic,
+ // so the default version for 2.1 apps is 2.1.1.
+ if (packageName == TestProjectCreator.AspNetCoreAppPackageName ||
+ packageName == TestProjectCreator.AspNetCoreAllPackageName)
+ {
+ if (minorVersion == "2.1")
+ {
+ return "2.1.1";
+ }
+ }
+ var parsed = NuGetVersion.Parse(minorVersion);
+ return new NuGetVersion(parsed.Major, parsed.Minor, 0).ToNormalizedString();
+ }
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenNetFrameworkSupportsNetStandard2.cs b/test/EndToEnd/GivenNetFrameworkSupportsNetStandard2.cs
new file mode 100644
index 000000000..97398a685
--- /dev/null
+++ b/test/EndToEnd/GivenNetFrameworkSupportsNetStandard2.cs
@@ -0,0 +1,40 @@
+using FluentAssertions;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace EndToEnd
+{
+ public class GivenNetFrameworkSupportsNetStandard2 : TestBase
+ {
+ [WindowsOnlyFact]
+ public void ANET461ProjectCanReferenceANETStandardProject()
+ {
+ var _testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "NETFrameworkReferenceNETStandard20")
+ .CreateInstance()
+ .WithSourceFiles();
+
+ string projectDirectory = Path.Combine(_testInstance.Root.FullName, "TestApp");
+
+ new RestoreCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ new BuildCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ new RunCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .ExecuteWithCapturedOutput()
+ .Should().Pass()
+ .And.HaveStdOutContaining("This string came from the test library!");
+
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenSelfContainedAppsRollForward.cs b/test/EndToEnd/GivenSelfContainedAppsRollForward.cs
new file mode 100644
index 000000000..297dfd1d5
--- /dev/null
+++ b/test/EndToEnd/GivenSelfContainedAppsRollForward.cs
@@ -0,0 +1,156 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Xml.Linq;
+using FluentAssertions;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using NuGet.ProjectModel;
+using NuGet.Versioning;
+using Xunit;
+
+namespace EndToEnd
+{
+ public partial class GivenSelfContainedAppsRollForward : TestBase
+ {
+ internal void ItRollsForwardToTheLatestVersion(string packageName, string minorVersion)
+ {
+ var testProjectCreator = new TestProjectCreator()
+ {
+ PackageName = packageName,
+ MinorVersion = minorVersion,
+ // Set RuntimeIdentifier to opt in to roll-forward behavior
+ RuntimeIdentifier = RuntimeInformation.RuntimeIdentifier
+ };
+
+ var testInstance = testProjectCreator.Create();
+
+ string projectDirectory = testInstance.Root.FullName;
+
+ // Get the version rolled forward to
+ new RestoreCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ string assetsFilePath = Path.Combine(projectDirectory, "obj", "project.assets.json");
+ var assetsFile = new LockFileFormat().Read(assetsFilePath);
+
+ var rolledForwardVersion = GetPackageVersion(assetsFile, packageName);
+ rolledForwardVersion.Should().NotBeNull();
+
+ if (rolledForwardVersion.IsPrerelease)
+ {
+ // If this version of .NET Core is still prerelease, then:
+ // - Floating the patch by adding ".*" to the major.minor version won't work, but
+ // - There aren't any patches to roll-forward to, so we skip testing this until the version
+ // leaves prerelease.
+ return;
+ }
+
+ testProjectCreator.Identifier = "floating";
+
+ var floatingProjectInstance = testProjectCreator.Create();
+
+ var floatingProjectPath = Path.Combine(floatingProjectInstance.Root.FullName, "TestAppSimple.csproj");
+
+ var floatingProject = XDocument.Load(floatingProjectPath);
+ var ns = floatingProject.Root.Name.Namespace;
+
+
+ if (packageName == TestProjectCreator.NETCorePackageName)
+ {
+ // Float the RuntimeFrameworkVersion to get the latest version of the runtime available from feeds
+ floatingProject.Root.Element(ns + "PropertyGroup")
+ .Add(new XElement(ns + "RuntimeFrameworkVersion", $"{minorVersion}.*"));
+ }
+ else
+ {
+ floatingProject.Root.Element(ns + "ItemGroup")
+ .Element(ns + "PackageReference")
+ .Add(new XAttribute("Version", $"{minorVersion}.*"),
+ new XAttribute("AllowExplicitVersion", "true"));
+ }
+
+ floatingProject.Save(floatingProjectPath);
+
+ new RestoreCommand()
+ .WithWorkingDirectory(floatingProjectInstance.Root.FullName)
+ .Execute()
+ .Should().Pass();
+
+ string floatingAssetsFilePath = Path.Combine(floatingProjectInstance.Root.FullName, "obj", "project.assets.json");
+
+ var floatedAssetsFile = new LockFileFormat().Read(floatingAssetsFilePath);
+
+ var floatedVersion = GetPackageVersion(floatedAssetsFile, packageName);
+ floatedVersion.Should().NotBeNull();
+
+ rolledForwardVersion.ToNormalizedString().Should().BeEquivalentTo(floatedVersion.ToNormalizedString(),
+ $"the latest patch version for {packageName} {minorVersion} in Microsoft.NETCoreSdk.BundledVersions.props " +
+ "needs to be updated (see the ImplicitPackageVariable items in MSBuildExtensions.targets in this repo)");
+ }
+
+ private static NuGetVersion GetPackageVersion(LockFile lockFile, string packageName)
+ {
+ return lockFile?.Targets?.SingleOrDefault(t => t.RuntimeIdentifier != null)
+ ?.Libraries?.SingleOrDefault(l =>
+ string.Compare(l.Name, packageName, StringComparison.CurrentCultureIgnoreCase) == 0)
+ ?.Version;
+ }
+
+ [Fact]
+ public void WeCoverLatestNetCoreAppRollForward()
+ {
+ // Run "dotnet new console", get TargetFramework property, and make sure it's covered in SupportedNetCoreAppVersions
+ var directory = TestAssets.CreateTestDirectory();
+ string projectDirectory = directory.FullName;
+
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute("console --no-restore")
+ .Should().Pass();
+
+ string projectPath = Path.Combine(projectDirectory, Path.GetFileName(projectDirectory) + ".csproj");
+
+ var project = XDocument.Load(projectPath);
+ var ns = project.Root.Name.Namespace;
+
+ string targetFramework = project.Root.Element(ns + "PropertyGroup")
+ .Element(ns + "TargetFramework")
+ .Value;
+
+ SupportedNetCoreAppVersions.TargetFrameworkShortFolderVersion
+ .Should().Contain(targetFramework, $"the {nameof(SupportedNetCoreAppVersions)}.{nameof(SupportedNetCoreAppVersions.Versions)} property should include the default version " +
+ "of .NET Core created by \"dotnet new\"");
+ }
+
+ [Fact]
+ public void WeCoverLatestAspNetCoreAppRollForward()
+ {
+ var directory = TestAssets.CreateTestDirectory();
+ string projectDirectory = directory.FullName;
+
+ // Run "dotnet new web", get TargetFramework property, and make sure it's covered in SupportedAspNetCoreAppVersions
+
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute("web --no-restore")
+ .Should().Pass();
+
+ string projectPath = Path.Combine(projectDirectory, Path.GetFileName(projectDirectory) + ".csproj");
+
+ var project = XDocument.Load(projectPath);
+ var ns = project.Root.Name.Namespace;
+
+ string targetFramework = project.Root.Element(ns + "PropertyGroup")
+ .Element(ns + "TargetFramework")
+ .Value;
+
+ TargetFrameworkHelper.GetNetAppTargetFrameworks(SupportedAspNetCoreVersions.Versions)
+ .Should().Contain(targetFramework, $"the {nameof(SupportedAspNetCoreVersions)} should include the default version " +
+ "of Microsoft.AspNetCore.App used by the templates created by \"dotnet new web\"");
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenUnixPlatform.cs b/test/EndToEnd/GivenUnixPlatform.cs
new file mode 100644
index 000000000..bb93b72fe
--- /dev/null
+++ b/test/EndToEnd/GivenUnixPlatform.cs
@@ -0,0 +1,29 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml.Linq;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+
+namespace EndToEnd.Tests
+{
+ public class GivenUnixPlatform : TestBase
+ {
+ [UnixOnlyTheory(Skip="https://github.com/dotnet/templating/issues/1979")]
+ [InlineData("wpf")]
+ [InlineData("winforms")]
+ public void ItDoesNotIncludeWindowsOnlyProjectTemplates(string template)
+ {
+ var directory = TestAssets.CreateTestDirectory();
+
+ new NewCommandShim()
+ .WithWorkingDirectory(directory.FullName)
+ .Execute(template)
+ .Should()
+ .Fail()
+ .And
+ .HaveStdErrContaining($": {template}.");
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenUsingDefaultRuntimeFrameworkVersions.cs b/test/EndToEnd/GivenUsingDefaultRuntimeFrameworkVersions.cs
new file mode 100644
index 000000000..de7655b86
--- /dev/null
+++ b/test/EndToEnd/GivenUsingDefaultRuntimeFrameworkVersions.cs
@@ -0,0 +1,88 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Xml.Linq;
+using FluentAssertions;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using NuGet.Versioning;
+using Xunit;
+
+namespace EndToEnd
+{
+ public partial class GivenUsingDefaultRuntimeFrameworkVersions : TestBase
+ {
+ private static readonly IEnumerable frameworks = new string[] {"Microsoft.NETCore.App", "Microsoft.WindowsDesktop.App",
+ "Microsoft.WindowsDesktop.App.WPF", "Microsoft.WindowsDesktop.App.WindowsForms", "Microsoft.AspNetCore.App" };
+
+ private static readonly IEnumerable versions = SupportedNetCoreAppVersions.Versions.Where(version => NuGetVersion.Parse(version).Major >= 3);
+
+ [Fact]
+ public void DefaultRuntimeVersionsAreUpToDate()
+ {
+ var outputFile = "resolvedVersions.txt";
+ var testProjectCreator = new TestProjectCreator()
+ {
+ PackageName = "DefaultRuntimeVersionsAreUpToDate",
+ MinorVersion = "3.0"
+ };
+ var testProject = testProjectCreator.Create();
+
+ var projectFile = new DirectoryInfo(testProject.Root.FullName).GetFiles("*.csproj").First().FullName;
+ var project = XDocument.Load(projectFile);
+ string writeResolvedVersionsTarget = @$"
+
+
+
+
+
+
+ ";
+ writeResolvedVersionsTarget = writeResolvedVersionsTarget.Replace('`', '"');
+ var targetElement = XElement.Parse(writeResolvedVersionsTarget);
+ var ns = project.Root.Name.Namespace;
+ foreach (var elem in targetElement.Descendants())
+ elem.Name = ns + elem.Name.LocalName;
+ targetElement.Name = ns + targetElement.Name.LocalName;
+ project.Root.Add(targetElement);
+ using (var file = File.CreateText(projectFile))
+ {
+ project.Save(file);
+ }
+
+ new RestoreCommand()
+ .WithWorkingDirectory(testProject.Root.FullName)
+ .Execute()
+ .Should().Pass();
+
+ var binDirectory = new DirectoryInfo(testProject.Root.FullName).Sub("bin").Sub("Debug").GetDirectories().FirstOrDefault();
+ binDirectory.Should().HaveFilesMatching(outputFile, SearchOption.TopDirectoryOnly);
+ var resolvedVersionsFile = File.ReadAllLines(Path.Combine(binDirectory.FullName, outputFile));
+ foreach (var framework in frameworks)
+ {
+ foreach (var version in versions)
+ {
+ var frameworkVersionLine = resolvedVersionsFile.Where(line => line.Contains(framework) && line.Contains(version)).FirstOrDefault();
+ if (!string.IsNullOrEmpty(frameworkVersionLine))
+ {
+ var defaultVersion = NuGetVersion.Parse(frameworkVersionLine.Split(" ")[1]);
+ var latestVersion = NuGetVersion.Parse(frameworkVersionLine.Split(" ")[2]);
+
+ if (latestVersion.Patch == 0 && latestVersion.IsPrerelease)
+ {
+ defaultVersion.Should().Be(latestVersion,
+ $"the DefaultRuntimeFrameworkVersion for { framework } { version } in Microsoft.NETCoreSdk.BundledVersions.props does not match latest prerelease version { latestVersion }");
+ }
+ else
+ {
+ defaultVersion.Should().Be(new NuGetVersion(latestVersion.Major, latestVersion.Minor, 0),
+ $"the DefaultRuntimeFrameworkVersion for { framework } { version } in Microsoft.NETCoreSdk.BundledVersions.props needs to be updated to { version }.0");
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenWeWantToRequireWindowsForDesktopApps.cs b/test/EndToEnd/GivenWeWantToRequireWindowsForDesktopApps.cs
new file mode 100644
index 000000000..6088040e3
--- /dev/null
+++ b/test/EndToEnd/GivenWeWantToRequireWindowsForDesktopApps.cs
@@ -0,0 +1,80 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+using System.IO;
+using System.Xml.Linq;
+using EndToEnd;
+using FluentAssertions;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+
+namespace Microsoft.DotNet.Tests.EndToEnd
+{
+ public class GivenWeWantToRequireWindowsForDesktopApps
+ {
+ [Fact]
+ public void It_does_not_download_desktop_targeting_packs_on_unix()
+ {
+ var testProjectCreator = new TestProjectCreator()
+ {
+ MinorVersion = "6.0"
+ };
+
+ testProjectCreator.AdditionalProperties["RestorePackagesPath"] = @"$(MSBuildProjectDirectory)\packages";
+ testProjectCreator.AdditionalProperties["OutputType"] = "exe";
+
+ var testInstance = testProjectCreator.Create();
+
+ new BuildCommand()
+ .WithWorkingDirectory(testInstance.Root.FullName)
+ .Execute()
+ .Should().Pass();
+
+ string packagesPath = Path.Combine(testInstance.Root.FullName, "packages");
+ Directory.Exists(packagesPath).Should().BeFalse(packagesPath + " should not exist");
+ }
+
+ [PlatformSpecificFact(TestPlatforms.Linux | TestPlatforms.OSX | TestPlatforms.FreeBSD)]
+ public void It_does_not_download_desktop_runtime_packs_on_unix()
+ {
+ const string Rid = "win-x64";
+
+ var testProjectCreator = new TestProjectCreator()
+ {
+ MinorVersion = "3.1"
+ };
+
+ testProjectCreator.AdditionalProperties["RestorePackagesPath"] = @"$(MSBuildProjectDirectory)\packages";
+ testProjectCreator.AdditionalProperties["OutputType"] = "exe";
+ testProjectCreator.AdditionalProperties["RuntimeIdentifier"] = Rid;
+
+ // At certain point of the release cycle LatestRuntimeFrameworkVersion in eng folder may not exist on the nuget feed
+ static void overrideLastRuntimeFrameworkVersionToExistingOlderVersion(XDocument project)
+ {
+ XNamespace ns = project.Root.Name.Namespace;
+ var target = XElement.Parse(@"
+
+ 3.1.10
+
+
+
+ 3.1.10
+
+ ");
+ target.Name = ns + target.Name.LocalName;
+ project.Root.Add(target);
+ }
+ TestFramework.TestAssetInstance testInstance
+ = testProjectCreator.Create().WithProjectChanges(overrideLastRuntimeFrameworkVersionToExistingOlderVersion);
+
+ new PublishCommand()
+ .WithWorkingDirectory(testInstance.Root.FullName)
+ .Execute()
+ .Should().Pass();
+
+ string packagesPath = Path.Combine(testInstance.Root.FullName, "packages", $"runtime.{Rid}.microsoft.windowsdesktop.app");
+ Directory.Exists(packagesPath).Should().BeFalse(packagesPath + " should not exist");
+ }
+ }
+}
diff --git a/test/EndToEnd/GivenWindowsApp.cs b/test/EndToEnd/GivenWindowsApp.cs
new file mode 100644
index 000000000..96595fe27
--- /dev/null
+++ b/test/EndToEnd/GivenWindowsApp.cs
@@ -0,0 +1,49 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System.IO;
+using System.Xml.Linq;
+using FluentAssertions;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+
+namespace EndToEnd
+{
+ public class GivenWindowsApp : TestBase
+ {
+ [WindowsOnlyTheory]
+ [InlineData("10.0.17763.0")]
+ [InlineData("10.0.18362.0")]
+ [InlineData("10.0.19041.0")]
+ [InlineData("10.0.20348.0")]
+ [InlineData("10.0.22000.0")]
+ [InlineData("10.0.22621.0")]
+ [InlineData("10.0.26100.0")]
+ public void ItCanBuildAndRun(string targetPlatformVersion)
+ {
+ var testInstance = TestAssets.Get(TestAssetKinds.TestProjects, "UseCswinrt")
+ .CreateInstance("UseCswinrt" + targetPlatformVersion)
+ .WithSourceFiles();
+
+ var projectPath = Path.Combine(testInstance.Root.FullName, "consolecswinrt.csproj");
+ var project = XDocument.Load(projectPath);
+ var ns = project.Root.Name.Namespace;
+
+ // Update TargetFramework to the right version of .NET Core
+ project.Root.Element(ns + "PropertyGroup")
+ .Add(new XElement(ns + "TargetPlatformVersion", targetPlatformVersion));
+
+ project.Save(projectPath);
+
+ new BuildCommand()
+ .WithProjectFile(new FileInfo(testInstance.Root.FullName))
+ .Execute()
+ .Should().Pass();
+
+ new RunCommand().WithWorkingDirectory(testInstance.Root.FullName)
+ .Execute("--no-build")
+ .Should().Pass().And.HaveStdOutContaining("Hello");
+ }
+ }
+}
diff --git a/test/EndToEnd/ProjectBuildTests.cs b/test/EndToEnd/ProjectBuildTests.cs
new file mode 100644
index 000000000..e3377ef9e
--- /dev/null
+++ b/test/EndToEnd/ProjectBuildTests.cs
@@ -0,0 +1,431 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Xml.Linq;
+using FluentAssertions;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+
+namespace EndToEnd.Tests
+{
+ public class ProjectBuildTests : TestBase
+ {
+ [Fact]
+ public void ItCanNewRestoreBuildRunCleanMSBuildProject()
+ {
+ var directory = TestAssets.CreateTestDirectory();
+ string projectDirectory = directory.FullName;
+
+ string newArgs = "console --debug:ephemeral-hive --no-restore";
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(newArgs)
+ .Should().Pass();
+
+ new RestoreCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ new BuildCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ var runCommand = new RunCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .ExecuteWithCapturedOutput()
+ .Should().Pass().And.HaveStdOutContaining("Hello, World!");
+
+ var binDirectory = new DirectoryInfo(projectDirectory).Sub("bin");
+ binDirectory.Should().HaveFilesMatching("*.dll", SearchOption.AllDirectories);
+
+ new CleanCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ binDirectory.Should().NotHaveFilesMatching("*.dll", SearchOption.AllDirectories);
+ }
+
+ [Fact]
+ public void ItCanRunAnAppUsingTheWebSdk()
+ {
+ var directory = TestAssets.CreateTestDirectory();
+ string projectDirectory = directory.FullName;
+
+ string newArgs = "console --debug:ephemeral-hive --no-restore";
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(newArgs)
+ .Should().Pass();
+
+ string projectPath = Path.Combine(projectDirectory, directory.Name + ".csproj");
+
+ var project = XDocument.Load(projectPath);
+ var ns = project.Root.Name.Namespace;
+
+ project.Root.Attribute("Sdk").Value = "Microsoft.NET.Sdk.Web";
+
+ project.Save(projectPath);
+
+ new BuildCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute()
+ .Should().Pass();
+
+ var runCommand = new RunCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .ExecuteWithCapturedOutput()
+ .Should().Pass().And.HaveStdOutContaining("Hello, World!");
+ }
+
+ [WindowsOnlyFact]
+ public void ItCanPublishArm64Winforms()
+ {
+ DirectoryInfo directory = TestAssets.CreateTestDirectory();
+ string projectDirectory = directory.FullName;
+
+ string newArgs = "winforms --no-restore";
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(newArgs)
+ .Should().Pass();
+
+ string publishArgs="-r win-arm64";
+ new PublishCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(publishArgs)
+ .Should().Pass();
+
+ var selfContainedPublishDir = new DirectoryInfo(projectDirectory)
+ .Sub("bin").Sub("Debug").GetDirectories().FirstOrDefault()
+ .Sub("win-arm64").Sub("publish");
+
+ selfContainedPublishDir.Should().HaveFilesMatching("System.Windows.Forms.dll", SearchOption.TopDirectoryOnly);
+ selfContainedPublishDir.Should().HaveFilesMatching($"{directory.Name}.dll", SearchOption.TopDirectoryOnly);
+ }
+
+ [WindowsOnlyFact]
+ public void ItCanPublishArm64Wpf()
+ {
+ DirectoryInfo directory = TestAssets.CreateTestDirectory();
+ string projectDirectory = directory.FullName;
+
+ string newArgs = "wpf --no-restore";
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(newArgs)
+ .Should().Pass();
+
+ string publishArgs="-r win-arm64";
+ new PublishCommand()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(publishArgs)
+ .Should().Pass();
+
+ var selfContainedPublishDir = new DirectoryInfo(projectDirectory)
+ .Sub("bin").Sub("Debug").GetDirectories().FirstOrDefault()
+ .Sub("win-arm64").Sub("publish");
+
+ selfContainedPublishDir.Should().HaveFilesMatching("PresentationCore.dll", SearchOption.TopDirectoryOnly);
+ selfContainedPublishDir.Should().HaveFilesMatching("PresentationNative_*.dll", SearchOption.TopDirectoryOnly);
+ selfContainedPublishDir.Should().HaveFilesMatching($"{directory.Name}.dll", SearchOption.TopDirectoryOnly);
+ }
+
+ [Theory]
+ // microsoft.dotnet.common.projectemplates templates
+ [InlineData("console")]
+ [InlineData("console", "C#")]
+ [InlineData("console", "VB")]
+ [InlineData("console", "F#")]
+ [InlineData("classlib")]
+ [InlineData("classlib", "C#")]
+ [InlineData("classlib", "VB")]
+ [InlineData("classlib", "F#")]
+
+ [InlineData("mstest")]
+ [InlineData("nunit")]
+ [InlineData("web")]
+ [InlineData("mvc")]
+ public void ItCanBuildTemplates(string templateName, string language = "")
+ {
+ TestTemplateCreateAndBuild(templateName, language: language);
+ }
+
+ ///
+ /// The test checks if dotnet new shows curated list correctly after the SDK installation and template insertion.
+ ///
+ [Fact]
+ public void DotnetNewShowsCuratedListCorrectly()
+ {
+ string locale = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
+ if (!string.IsNullOrWhiteSpace(locale)
+ && !locale.StartsWith("en", StringComparison.OrdinalIgnoreCase))
+ {
+ Console.WriteLine($"[{nameof(DotnetNewShowsCuratedListCorrectly)}] CurrentUICulture: {locale}");
+ Console.WriteLine($"[{nameof(DotnetNewShowsCuratedListCorrectly)}] Test is skipped as it supports only 'en' or invariant culture.");
+ return;
+ }
+
+ string expectedOutput =
+@"[\-\s]+
+[\w \.]+webapp,razor\s+\[C#\][\w\ \/]+
+[\w \.]+blazorserver\s+\[C#\][\w\ \/]+
+[\w \.]+classlib\s+\[C#\],F#,VB[\w\ \/]+
+[\w \.]+console\s+\[C#\],F#,VB[\w\ \/]+
+";
+
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ expectedOutput +=
+@"[\w \.]+winforms\s+\[C#\],VB[\w\ \/]+
+[\w \.]+\wpf\s+\[C#\],VB[\w\ \/]+
+";
+ }
+ //list should end with new line
+ expectedOutput += Environment.NewLine;
+
+ new NewCommandShim()
+ .Execute()
+ .Should().Pass()
+ .And.HaveStdOutMatching(expectedOutput);
+ }
+
+ [Theory]
+ // microsoft.dotnet.common.itemtemplates templates
+ [InlineData("globaljson")]
+ [InlineData("nugetconfig")]
+ [InlineData("webconfig")]
+ [InlineData("gitignore")]
+ [InlineData("tool-manifest")]
+ [InlineData("sln")]
+ public void ItCanCreateItemTemplate(string templateName)
+ {
+ DirectoryInfo directory = TestAssets.CreateTestDirectory(identifier: templateName);
+ string projectDirectory = directory.FullName;
+
+ string newArgs = $"{templateName} --debug:ephemeral-hive";
+
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(newArgs)
+ .Should().Pass();
+
+ //check if the template created files
+ Assert.True(directory.Exists);
+ Assert.True(directory.EnumerateFileSystemInfos().Any());
+ }
+
+ [WindowsOnlyTheory]
+ [InlineData("wpf", Skip = "https://github.com/dotnet/wpf/issues/2363")]
+ [InlineData("winforms", Skip = "https://github.com/dotnet/wpf/issues/2363")]
+ public void ItCanBuildDesktopTemplates(string templateName)
+ {
+ TestTemplateCreateAndBuild(templateName);
+ }
+
+ [WindowsOnlyTheory]
+ [InlineData("wpf", Skip = "https://github.com/dotnet/wpf/issues/2363")]
+ public void ItCanBuildDesktopTemplatesSelfContained(string templateName)
+ {
+ TestTemplateCreateAndBuild(templateName);
+ }
+
+ [Theory]
+ [InlineData("web")]
+ [InlineData("console")]
+ public void ItCanBuildTemplatesSelfContained(string templateName)
+ {
+ TestTemplateCreateAndBuild(templateName, selfContained: true);
+ }
+
+ ///
+ /// The test checks if the template creates the template for correct framework by default.
+ /// For .NET 6 the templates should create the projects targeting net6.0
+ ///
+ [Theory]
+ [InlineData("console")]
+ [InlineData("console", "C#")]
+ [InlineData("console", "VB")]
+ [InlineData("console", "F#")]
+ [InlineData("classlib")]
+ [InlineData("classlib", "C#")]
+ [InlineData("classlib", "VB")]
+ [InlineData("classlib", "F#")]
+ [InlineData("worker")]
+ [InlineData("worker", "C#")]
+ [InlineData("worker", "F#")]
+ [InlineData("mstest")]
+ [InlineData("mstest", "C#")]
+ [InlineData("mstest", "VB")]
+ [InlineData("mstest", "F#")]
+ [InlineData("nunit")]
+ [InlineData("nunit", "C#")]
+ [InlineData("nunit", "VB")]
+ [InlineData("nunit", "F#")]
+ [InlineData("xunit")]
+ [InlineData("xunit", "C#")]
+ [InlineData("xunit", "VB")]
+ [InlineData("xunit", "F#")]
+ [InlineData("blazorserver")]
+ [InlineData("blazorwasm")]
+ [InlineData("web")]
+ [InlineData("web", "C#")]
+ [InlineData("web", "F#")]
+ [InlineData("mvc")]
+ [InlineData("mvc", "C#")]
+ [InlineData("mvc", "F#")]
+ [InlineData("webapi")]
+ [InlineData("webapi", "C#")]
+ [InlineData("webapi", "F#")]
+ [InlineData("webapp")]
+ [InlineData("razorclasslib")]
+ public void ItCanCreateAndBuildTemplatesWithDefaultFramework(string templateName, string language = "")
+ {
+ string framework = DetectExpectedDefaultFramework();
+ TestTemplateCreateAndBuild(templateName, selfContained: true, language: language, framework: framework);
+ }
+
+ ///
+ /// The test checks if the template creates the template for correct framework by default.
+ /// For .NET 6 the templates should create the projects targeting net6.0.
+ /// These templates require node.js to be built, so we just check if TargetFramework is present in csproj files
+ ///
+ [Theory]
+ [InlineData("angular")]
+ [InlineData("react")]
+ public void ItCanCreateTemplateWithDefaultFramework(string templateName)
+ {
+ string framework = DetectExpectedDefaultFramework();
+ TestTemplateCreateAndBuild(templateName, build: false, framework: framework);
+ }
+
+ ///
+ /// [Windows only tests]
+ /// The test checks if the template creates the template for correct framework by default.
+ /// For .NET 6 the templates should create the projects targeting net6.0.
+ ///
+ [WindowsOnlyTheory]
+ [InlineData("wpf")]
+ [InlineData("wpf", "C#")]
+ [InlineData("wpf", "VB")]
+ [InlineData("wpflib")]
+ [InlineData("wpflib", "C#")]
+ [InlineData("wpflib", "VB")]
+ [InlineData("wpfcustomcontrollib")]
+ [InlineData("wpfcustomcontrollib", "C#")]
+ [InlineData("wpfcustomcontrollib", "VB")]
+ [InlineData("wpfusercontrollib")]
+ [InlineData("wpfusercontrollib", "C#")]
+ [InlineData("wpfusercontrollib", "VB")]
+ [InlineData("winforms")]
+ [InlineData("winforms", "C#")]
+ [InlineData("winforms", "VB")]
+ [InlineData("winformslib")]
+ [InlineData("winformslib", "C#")]
+ [InlineData("winformslib", "VB")]
+ [InlineData("winformscontrollib")]
+ [InlineData("winformscontrollib", "C#")]
+ [InlineData("winformscontrollib", "VB")]
+ public void ItCanCreateAndBuildTemplatesWithDefaultFramework_Windows(string templateName, string language = "")
+ {
+ string framework = DetectExpectedDefaultFramework();
+ TestTemplateCreateAndBuild(templateName, selfContained: true, language: language, framework: $"{framework}-windows");
+ }
+
+ ///
+ /// [project is not built on linux-musl]
+ /// The test checks if the template creates the template for correct framework by default.
+ /// For .NET 6 the templates should create the projects targeting net6.0.
+ ///
+ [Theory]
+ [InlineData("grpc")]
+ public void ItCanCreateAndBuildTemplatesWithDefaultFramework_DisableBuildOnLinuxMusl(string templateName)
+ {
+ string framework = DetectExpectedDefaultFramework();
+
+ if (RuntimeInformation.RuntimeIdentifier.StartsWith("alpine")) //linux musl
+ {
+ TestTemplateCreateAndBuild(templateName, build: false, framework: framework);
+ }
+ else
+ {
+ TestTemplateCreateAndBuild(templateName, selfContained: true, framework: framework);
+ }
+ }
+
+ private static string DetectExpectedDefaultFramework()
+ {
+ string dotnetFolder = Path.GetDirectoryName(RepoDirectoriesProvider.DotnetUnderTest);
+ string[] runtimeFolders = Directory.GetDirectories(Path.Combine(dotnetFolder, "shared", "Microsoft.NETCore.App"));
+
+ int latestMajorVersion = runtimeFolders.Select(folder => int.Parse(Path.GetFileName(folder).Split('.').First())).Max();
+ if (latestMajorVersion == 6)
+ {
+ return "net6.0";
+ }
+ throw new Exception("Unsupported version of SDK");
+ }
+
+ private static void TestTemplateCreateAndBuild(string templateName, bool build = true, bool selfContained = false, string language = "", string framework = "")
+ {
+ DirectoryInfo directory = TestAssets.CreateTestDirectory(identifier: string.IsNullOrWhiteSpace(language) ? templateName : $"{templateName}[{language}]");
+ string projectDirectory = directory.FullName;
+
+ string newArgs = $"{templateName} --debug:ephemeral-hive --no-restore";
+ if (!string.IsNullOrWhiteSpace(language))
+ {
+ newArgs += $" --language {language}";
+ }
+
+ new NewCommandShim()
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(newArgs)
+ .Should().Pass();
+
+ if (!string.IsNullOrWhiteSpace(framework))
+ {
+ //check if MSBuild TargetFramework property for *proj is set to expected framework
+ string expectedExtension = language switch
+ {
+ "C#" => "*.csproj",
+ "F#" => "*.fsproj",
+ "VB" => "*.vbproj",
+ _ => "*.csproj"
+ };
+ string projectFile = Directory.GetFiles(projectDirectory, expectedExtension).Single();
+ XDocument projectXml = XDocument.Load(projectFile);
+ XNamespace ns = projectXml.Root.Name.Namespace;
+ Assert.Equal(framework, projectXml.Root.Element(ns + "PropertyGroup").Element(ns + "TargetFramework").Value);
+ }
+
+ if (build)
+ {
+ string buildArgs = selfContained ? "" : $"-r {RuntimeInformation.RuntimeIdentifier}";
+ if (!string.IsNullOrWhiteSpace(framework))
+ {
+ buildArgs += $" --framework {framework}";
+ }
+
+ // Remove this (or formalize it) after https://github.com/dotnet/installer/issues/12479 is resolved.
+ if (language == "F#")
+ {
+ buildArgs += $" /p:_NETCoreSdkIsPreview=true";
+ }
+
+ string dotnetRoot = Path.GetDirectoryName(RepoDirectoriesProvider.DotnetUnderTest);
+ new BuildCommand()
+ .WithEnvironmentVariable("PATH", dotnetRoot) // override PATH since razor rely on PATH to find dotnet
+ .WithWorkingDirectory(projectDirectory)
+ .Execute(buildArgs)
+ .Should().Pass();
+ }
+ }
+ }
+}
diff --git a/test/EndToEnd/SupportedNetCoreAppVersions.cs b/test/EndToEnd/SupportedNetCoreAppVersions.cs
new file mode 100644
index 000000000..75862eed3
--- /dev/null
+++ b/test/EndToEnd/SupportedNetCoreAppVersions.cs
@@ -0,0 +1,75 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace EndToEnd
+{
+ public static class TargetFrameworkHelper
+ {
+ private static Version _firstNetAppVersion = new Version(5, 0);
+
+ public static IEnumerable GetNetAppTargetFrameworks(IEnumerable versions) =>
+ versions.Select(v => $"netcoreapp{v}")
+ // Add netX.X tfms starting with 5.0
+ .Concat(versions.Where(v => Version.Parse(v) >= _firstNetAppVersion).Select(v => $"net{v}"));
+ }
+
+ public class SupportedNetCoreAppVersions : IEnumerable