diff --git a/eng/Versions.props b/eng/Versions.props
index 3b433e226e867b..f14ffc2a9993f6 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -1,11 +1,11 @@
- 8.0.12
+ 8.0.13
8
0
- 12
+ 13
8.0.100
7.0.20
6.0.36
diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicApi.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicApi.cs
index 2e5f1e6d546df4..d3a6312c16f2f6 100644
--- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicApi.cs
+++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicApi.cs
@@ -85,8 +85,23 @@ static MsQuicApi()
if (OperatingSystem.IsWindows())
{
- // Windows ships msquic in the assembly directory.
- loaded = NativeLibrary.TryLoad(Interop.Libraries.MsQuic, typeof(MsQuicApi).Assembly, DllImportSearchPath.AssemblyDirectory, out msQuicHandle);
+#pragma warning disable IL3000 // Avoid accessing Assembly file path when publishing as a single file
+ // Windows ships msquic in the assembly directory next to System.Net.Quic, so load that.
+ // For single-file deployments, the assembly location is an empty string so we fall back
+ // to AppContext.BaseDirectory which is the directory containing the single-file executable.
+ string path = typeof(MsQuicApi).Assembly.Location is string assemblyLocation && !string.IsNullOrEmpty(assemblyLocation)
+ ? System.IO.Path.GetDirectoryName(assemblyLocation)!
+ : AppContext.BaseDirectory;
+#pragma warning restore IL3000
+
+ path = System.IO.Path.Combine(path, Interop.Libraries.MsQuic);
+
+ if (NetEventSource.Log.IsEnabled())
+ {
+ NetEventSource.Info(null, $"Attempting to load MsQuic from {path}");
+ }
+
+ loaded = NativeLibrary.TryLoad(path, typeof(MsQuicApi).Assembly, DllImportSearchPath.LegacyBehavior, out msQuicHandle);
}
else
{
@@ -156,7 +171,7 @@ static MsQuicApi()
if (version < s_minMsQuicVersion)
{
- NotSupportedReason = $"Incompatible MsQuic library version '{version}', expecting higher than '{s_minMsQuicVersion}'.";
+ NotSupportedReason = $"Incompatible MsQuic library version '{version}', expecting higher than '{s_minMsQuicVersion}'.";
if (NetEventSource.Log.IsEnabled())
{
NetEventSource.Info(null, NotSupportedReason);
@@ -180,7 +195,7 @@ static MsQuicApi()
// Implies windows platform, check TLS1.3 availability
if (!IsWindowsVersionSupported())
{
- NotSupportedReason = $"Current Windows version ({Environment.OSVersion}) is not supported by QUIC. Minimal supported version is {s_minWindowsVersion}.";
+ NotSupportedReason = $"Current Windows version ({Environment.OSVersion}) is not supported by QUIC. Minimal supported version is {s_minWindowsVersion}.";
if (NetEventSource.Log.IsEnabled())
{
NetEventSource.Info(null, NotSupportedReason);
diff --git a/src/mono/wasm/build/WasmApp.targets b/src/mono/wasm/build/WasmApp.targets
index bc92659fa3479b..814acbdf5bae28 100644
--- a/src/mono/wasm/build/WasmApp.targets
+++ b/src/mono/wasm/build/WasmApp.targets
@@ -207,7 +207,7 @@
+ Properties="_WasmInNestedPublish_UniqueProperty_XYZ=true;;WasmBuildingForNestedPublish=true;DeployOnBuild=;_IsPublishing=;_WasmIsPublishing=$(_IsPublishing);ResolveAssemblyReferencesFindRelatedSatellites=true">
@@ -503,6 +503,7 @@
+
diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmBuildAssets.cs b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmBuildAssets.cs
index f2e4336da3630b..20f80f15680cfe 100644
--- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmBuildAssets.cs
+++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmBuildAssets.cs
@@ -111,7 +111,12 @@ public override bool Execute()
assetCandidate.SetMetadata("AssetTraitName", "Culture");
assetCandidate.SetMetadata("AssetTraitValue", inferredCulture);
assetCandidate.SetMetadata("RelativePath", $"_framework/{inferredCulture}/{satelliteAssembly.GetMetadata("FileName")}{satelliteAssembly.GetMetadata("Extension")}");
- assetCandidate.SetMetadata("RelatedAsset", Path.GetFullPath(Path.Combine(OutputPath, "wwwroot", "_framework", Path.GetFileName(assetCandidate.GetMetadata("ResolvedFrom")))));
+
+ var resolvedFrom = assetCandidate.GetMetadata("ResolvedFrom");
+ if (resolvedFrom == "{RawFileName}") // Satellite assembly found from `` element
+ resolvedFrom = candidate.GetMetadata("OriginalItemSpec");
+
+ assetCandidate.SetMetadata("RelatedAsset", Path.GetFullPath(Path.Combine(OutputPath, "wwwroot", "_framework", Path.GetFileName(resolvedFrom))));
assetCandidates.Add(assetCandidate);
continue;