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 @@ - - - - - + + + + + + + +