diff --git a/eng/PackageDownloadAndReference.targets b/eng/PackageDownloadAndReference.targets
new file mode 100644
index 00000000000000..0e56882d160e7b
--- /dev/null
+++ b/eng/PackageDownloadAndReference.targets
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ lib/$(TargetFramework)
+ %(Identity)
+ false
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eng/Versions.props b/eng/Versions.props
index bef20c602d9663..e7a600f5e5b999 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -136,8 +136,18 @@
5.0.0
5.0.0
7.0.0
-
+
+
+ 7.0.0
+ 4.5.1
+ 7.0.0
+ 4.5.5
+ 7.0.0
+ 7.0.0
+ 7.0.0
7.0.3
+ 4.5.4
+
8.0.0-rc.1.23406.6
6.0.0
7.0.0
@@ -178,8 +188,10 @@
$(MicrosoftBuildVersion)
$(MicrosoftBuildVersion)
$(MicrosoftBuildVersion)
+ 6.2.4
6.2.4
6.2.4
+ 6.2.4
7.0.412701
6.0
diff --git a/src/tasks/AndroidAppBuilder/AndroidAppBuilder.csproj b/src/tasks/AndroidAppBuilder/AndroidAppBuilder.csproj
index 8afaa55486ffb9..893cf7ddd0ead6 100644
--- a/src/tasks/AndroidAppBuilder/AndroidAppBuilder.csproj
+++ b/src/tasks/AndroidAppBuilder/AndroidAppBuilder.csproj
@@ -10,9 +10,6 @@
-
-
-
diff --git a/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj b/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj
index e76730b5aeca07..860b54a2bb84c3 100644
--- a/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj
+++ b/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj
@@ -11,11 +11,6 @@
$(NoWarn),CS8604,CS8602
true
-
-
-
-
-
diff --git a/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj b/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj
index 233333c8dcd15a..9962f0a110267c 100644
--- a/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj
+++ b/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj
@@ -10,9 +10,6 @@
-
-
-
diff --git a/src/tasks/Crossgen2Tasks/Crossgen2Tasks.csproj b/src/tasks/Crossgen2Tasks/Crossgen2Tasks.csproj
index 93aab7abedef8b..6e81ac04c70457 100644
--- a/src/tasks/Crossgen2Tasks/Crossgen2Tasks.csproj
+++ b/src/tasks/Crossgen2Tasks/Crossgen2Tasks.csproj
@@ -9,8 +9,13 @@
$(NoWarn),CS8604,CS8602
-
-
+
+
+
+
+
+
diff --git a/src/tasks/Directory.Build.targets b/src/tasks/Directory.Build.targets
new file mode 100644
index 00000000000000..c0b1ec84a2a158
--- /dev/null
+++ b/src/tasks/Directory.Build.targets
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tasks/LibraryBuilder/LibraryBuilder.csproj b/src/tasks/LibraryBuilder/LibraryBuilder.csproj
index e0445fcddc2499..9a04948d7d39e3 100644
--- a/src/tasks/LibraryBuilder/LibraryBuilder.csproj
+++ b/src/tasks/LibraryBuilder/LibraryBuilder.csproj
@@ -10,9 +10,6 @@
-
-
-
diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj
index 4d329dff0242f8..1d85bdf0addbc6 100644
--- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj
+++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj
@@ -19,11 +19,7 @@
-
-
-
-
-
+
diff --git a/src/tasks/Microsoft.NET.WebAssembly.Webcil/Microsoft.NET.WebAssembly.Webcil.csproj b/src/tasks/Microsoft.NET.WebAssembly.Webcil/Microsoft.NET.WebAssembly.Webcil.csproj
index d09ae4a569a598..92d9522e1bd333 100644
--- a/src/tasks/Microsoft.NET.WebAssembly.Webcil/Microsoft.NET.WebAssembly.Webcil.csproj
+++ b/src/tasks/Microsoft.NET.WebAssembly.Webcil/Microsoft.NET.WebAssembly.Webcil.csproj
@@ -14,13 +14,6 @@
false
-
-
-
-
-
-
-
diff --git a/src/tasks/MobileBuildTasks/MobileBuildTasks.csproj b/src/tasks/MobileBuildTasks/MobileBuildTasks.csproj
index f0f24cad0843c6..cb9f094bf1ab66 100644
--- a/src/tasks/MobileBuildTasks/MobileBuildTasks.csproj
+++ b/src/tasks/MobileBuildTasks/MobileBuildTasks.csproj
@@ -13,11 +13,6 @@
-
-
-
-
-
diff --git a/src/tasks/MonoTargetsTasks/MonoTargetsTasks.csproj b/src/tasks/MonoTargetsTasks/MonoTargetsTasks.csproj
index 21861ede492813..d192664dfd84be 100644
--- a/src/tasks/MonoTargetsTasks/MonoTargetsTasks.csproj
+++ b/src/tasks/MonoTargetsTasks/MonoTargetsTasks.csproj
@@ -5,21 +5,6 @@
enable
$(NoWarn),CA1050,CA1850
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/tasks/TestExclusionListTasks/TestExclusionListTasks.csproj b/src/tasks/TestExclusionListTasks/TestExclusionListTasks.csproj
index 592a8652953b83..5f0f172020ecb1 100644
--- a/src/tasks/TestExclusionListTasks/TestExclusionListTasks.csproj
+++ b/src/tasks/TestExclusionListTasks/TestExclusionListTasks.csproj
@@ -13,9 +13,6 @@
-
-
-
diff --git a/src/tasks/WasmAppBuilder/PInvokeCollector.cs b/src/tasks/WasmAppBuilder/PInvokeCollector.cs
index 6c26c3a7be9790..e40fcd460c660d 100644
--- a/src/tasks/WasmAppBuilder/PInvokeCollector.cs
+++ b/src/tasks/WasmAppBuilder/PInvokeCollector.cs
@@ -167,13 +167,7 @@ static bool MethodHasCallbackAttributes(MethodInfo method)
}
}
- public static bool IsBlittable(Type type)
- {
- if (type.IsPrimitive || type.IsByRef || type.IsPointer || type.IsEnum)
- return true;
- else
- return false;
- }
+ public static bool IsBlittable(Type type) => type.IsPrimitive || type.IsByRef || type.IsPointer || type.IsEnum;
private static void Error(string msg) => throw new LogAsErrorException(msg);
@@ -200,11 +194,24 @@ private static bool HasAttribute(MemberInfo element, params string[] attributeNa
return false;
}
- private static bool TryIsMethodGetParametersUnsupported(MethodInfo method, [NotNullWhen(true)] out string? reason)
+ public static bool IsFunctionPointer(Type type)
+ {
+ object? bIsFunctionPointer = type.GetType().GetProperty("IsFunctionPointer")?.GetValue(type);
+ return (bIsFunctionPointer is bool b) && b;
+ }
+
+ internal static bool TryIsMethodGetParametersUnsupported(MethodInfo method, [NotNullWhen(true)] out string? reason)
{
try
{
method.GetParameters();
+ foreach (var p in method.GetParameters())
+ {
+ if (IsFunctionPointer(p.ParameterType))
+ {
+ throw new NotSupportedException("Parsing function pointer types in signatures is not supported.");
+ }
+ }
}
catch (NotSupportedException nse)
{
diff --git a/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs b/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs
index a1dee5649efb4d..cad52c4199ed62 100644
--- a/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs
+++ b/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs
@@ -13,8 +13,6 @@
internal sealed class PInvokeTableGenerator
{
- private readonly Dictionary _assemblyDisableRuntimeMarshallingAttributeCache = new();
-
private TaskLoggingHelper Log { get; set; }
private readonly Func _fixupSymbolName;
private readonly HashSet signatures = new();
@@ -168,13 +166,13 @@ static bool ShouldTreatAsVariadic(PInvoke[] candidates)
return false;
PInvoke first = candidates[0];
- if (TryIsMethodGetParametersUnsupported(first.Method, out _))
+ if (PInvokeCollector.TryIsMethodGetParametersUnsupported(first.Method, out _))
return false;
int firstNumArgs = first.Method.GetParameters().Length;
return candidates
.Skip(1)
- .Any(c => !TryIsMethodGetParametersUnsupported(c.Method, out _) &&
+ .Any(c => !PInvokeCollector.TryIsMethodGetParametersUnsupported(c.Method, out _) &&
c.Method.GetParameters().Length != firstNumArgs);
}
}
@@ -200,28 +198,6 @@ private string SymbolNameForMethod(MethodInfo method)
_ => "int"
};
- // FIXME: System.Reflection.MetadataLoadContext can't decode function pointer types
- // https://github.com/dotnet/runtime/issues/43791
- private static bool TryIsMethodGetParametersUnsupported(MethodInfo method, [NotNullWhen(true)] out string? reason)
- {
- try
- {
- method.GetParameters();
- }
- catch (NotSupportedException nse)
- {
- reason = nse.Message;
- return true;
- }
- catch
- {
- // not concerned with other exceptions
- }
-
- reason = null;
- return false;
- }
-
private string? GenPInvokeDecl(PInvoke pinvoke)
{
var sb = new StringBuilder();
@@ -234,7 +210,7 @@ private static bool TryIsMethodGetParametersUnsupported(MethodInfo method, [NotN
return sb.ToString();
}
- if (TryIsMethodGetParametersUnsupported(pinvoke.Method, out string? reason))
+ if (PInvokeCollector.TryIsMethodGetParametersUnsupported(pinvoke.Method, out string? reason))
{
// Don't use method.ToString() or any of it's parameters, or return type
// because at least one of those are unsupported, and will throw
@@ -381,25 +357,5 @@ private void EmitNativeToInterp(StreamWriter w, List callbacks)
w.WriteLine("};");
}
- private bool HasAssemblyDisableRuntimeMarshallingAttribute(Assembly assembly)
- {
- if (!_assemblyDisableRuntimeMarshallingAttributeCache.TryGetValue(assembly, out var value))
- {
- _assemblyDisableRuntimeMarshallingAttributeCache[assembly] = value = assembly
- .GetCustomAttributesData()
- .Any(d => d.AttributeType.Name == "DisableRuntimeMarshallingAttribute");
- }
-
- return value;
- }
-
- private static bool IsBlittable(Type type)
- {
- if (type.IsPrimitive || type.IsByRef || type.IsPointer || type.IsEnum)
- return true;
- else
- return false;
- }
-
private static void Error(string msg) => throw new LogAsErrorException(msg);
}
diff --git a/src/tasks/WasmAppBuilder/SignatureMapper.cs b/src/tasks/WasmAppBuilder/SignatureMapper.cs
index 75b51ddeb47e84..085af5703250dd 100644
--- a/src/tasks/WasmAppBuilder/SignatureMapper.cs
+++ b/src/tasks/WasmAppBuilder/SignatureMapper.cs
@@ -59,6 +59,10 @@ internal static class SignatureMapper
foreach (var parameter in method.GetParameters())
{
+ if (PInvokeCollector.IsFunctionPointer(parameter.ParameterType))
+ {
+ throw new NotSupportedException("Parsing function pointer types in signatures is not supported.");
+ }
char? parameterChar = TypeToChar(parameter.ParameterType);
if (parameterChar == null)
{
diff --git a/src/tasks/WasmAppBuilder/WasmAppBuilder.csproj b/src/tasks/WasmAppBuilder/WasmAppBuilder.csproj
index 34a51095986136..a664c4de72acd0 100644
--- a/src/tasks/WasmAppBuilder/WasmAppBuilder.csproj
+++ b/src/tasks/WasmAppBuilder/WasmAppBuilder.csproj
@@ -21,16 +21,15 @@
-
-
-
-
-
-
+
+
+
+
@@ -38,8 +37,6 @@
-
diff --git a/src/tasks/WasmBuildTasks/WasmBuildTasks.csproj b/src/tasks/WasmBuildTasks/WasmBuildTasks.csproj
index 32f7be8a7fa50f..b925f4f2e7aa89 100644
--- a/src/tasks/WasmBuildTasks/WasmBuildTasks.csproj
+++ b/src/tasks/WasmBuildTasks/WasmBuildTasks.csproj
@@ -6,8 +6,6 @@
$(NoWarn),CA1050
-
-
diff --git a/src/tasks/WorkloadBuildTasks/WorkloadBuildTasks.csproj b/src/tasks/WorkloadBuildTasks/WorkloadBuildTasks.csproj
index fbb13d8d9c4ecf..768fb6439f563d 100644
--- a/src/tasks/WorkloadBuildTasks/WorkloadBuildTasks.csproj
+++ b/src/tasks/WorkloadBuildTasks/WorkloadBuildTasks.csproj
@@ -7,7 +7,5 @@
-
-
diff --git a/src/tasks/installer.tasks/installer.tasks.csproj b/src/tasks/installer.tasks/installer.tasks.csproj
index 98c370fdfedb13..031a237ecc1860 100644
--- a/src/tasks/installer.tasks/installer.tasks.csproj
+++ b/src/tasks/installer.tasks/installer.tasks.csproj
@@ -6,19 +6,12 @@
-
-
-
-
-
-
-
+
+
+
-
-
-
-
+
diff --git a/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj b/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
index c14ed13a50d532..d018d7bcf786f9 100644
--- a/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
+++ b/src/tools/illink/src/ILLink.Tasks/ILLink.Tasks.csproj
@@ -56,14 +56,16 @@
-
-
-
-
-
+
+
+
+
+
+
+
+