Merge pull request #7784 from hvitved/csharp/dotnet6

C#: Use .NET 6
This commit is contained in:
Tom Hvitved
2022-02-03 16:42:26 +01:00
committed by GitHub
67 changed files with 3469 additions and 2042 deletions

View File

@@ -27,6 +27,11 @@ jobs:
pull-requests: read
steps:
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.101
- name: Checkout repository
uses: actions/checkout@v2
@@ -51,7 +56,7 @@ jobs:
# uses a compiled language
- run: |
dotnet build csharp
dotnet build csharp /p:UseSharedCompilation=false
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@main

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
<Nullable>enable</Nullable>

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Autobuild.Cpp</AssemblyName>
<RootNamespace>Semmle.Autobuild.Cpp</RootNamespace>
<ApplicationIcon />

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
<Nullable>enable</Nullable>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Autobuild.CSharp</AssemblyName>
<RootNamespace>Semmle.Autobuild.CSharp</RootNamespace>
<ApplicationIcon/>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Autobuild.Shared</AssemblyName>
<RootNamespace>Semmle.Autobuild.Shared</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Extraction.CIL.Driver</AssemblyName>
<RootNamespace>Semmle.Extraction.CIL.Driver</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Extraction.CIL</AssemblyName>
<RootNamespace>Semmle.Extraction.CIL</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Extraction.CSharp.Driver</AssemblyName>
<RootNamespace>Semmle.Extraction.CSharp.Driver</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -146,7 +146,7 @@ namespace Semmle.BuildAnalyser
* loading the same assembly from different locations.
*/
using var pereader = new System.Reflection.PortableExecutable.PEReader(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read));
using var sha1 = new SHA1CryptoServiceProvider();
using var sha1 = SHA1.Create();
var metadata = pereader.GetMetadata();
unsafe
{

View File

@@ -160,7 +160,7 @@ namespace Semmle.BuildAnalyser
{
var bytes = Encoding.Unicode.GetBytes(srcDir);
using var sha1 = new SHA1CryptoServiceProvider();
using var sha1 = SHA1.Create();
var sha = sha1.ComputeHash(bytes);
var sb = new StringBuilder();
foreach (var b in sha.Take(8))

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Extraction.CSharp.Standalone</AssemblyName>
<RootNamespace>Semmle.Extraction.CSharp.Standalone</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -178,6 +178,9 @@ namespace Semmle.Extraction.CSharp.Entities
/// <returns>The converted name.</returns>
private static string OperatorSymbol(Context cx, IMethodSymbol method)
{
if (method.ExplicitInterfaceImplementations.Any())
return OperatorSymbol(cx, method.ExplicitInterfaceImplementations.First());
var methodName = method.Name;
if (!OperatorSymbol(methodName, out var result))
cx.ModelError(method, $"Unhandled operator name in OperatorSymbol(): '{methodName}'");

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Extraction.CSharp</AssemblyName>
<RootNamespace>Semmle.Extraction.CSharp</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
<Nullable>enable</Nullable>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Extraction</AssemblyName>
<RootNamespace>Semmle.Extraction</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
<Nullable>enable</Nullable>

View File

@@ -84,7 +84,7 @@ namespace Semmle.Util
public static string ComputeFileHash(string filePath)
{
using var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
using var shaAlg = new SHA256Managed();
using var shaAlg = SHA256.Create();
var sha = shaAlg.ComputeHash(fileStream);
var hex = new StringBuilder(sha.Length * 2);
foreach (var b in sha)

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Semmle.Util</AssemblyName>
<RootNamespace>Semmle.Util</RootNamespace>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

View File

@@ -8,7 +8,7 @@ import shutil
def write_csproj_prefix(ioWrapper):
ioWrapper.write('<Project Sdk="Microsoft.NET.Sdk">\n')
ioWrapper.write(' <PropertyGroup>\n')
ioWrapper.write(' <TargetFramework>net5.0</TargetFramework>\n')
ioWrapper.write(' <TargetFramework>net6.0</TargetFramework>\n')
ioWrapper.write(' <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n')
ioWrapper.write(' <OutputPath>bin\</OutputPath>\n')
ioWrapper.write(
@@ -60,7 +60,7 @@ jsonFile = os.path.join(rawOutputDir, outputName + '.json')
version = helpers.get_argv(2, "latest")
print("\n* Creating new input project")
run_cmd(['dotnet', 'new', 'classlib', "-f", "net5.0", "--language", "C#", '--name',
run_cmd(['dotnet', 'new', 'classlib', "-f", "net6.0", "--language", "C#", '--name',
projectNameIn, '--output', projectDirIn])
helpers.remove_files(projectDirIn, '.cs')
@@ -71,7 +71,7 @@ if (version != "latest"):
cmd.append(version)
run_cmd(cmd)
sdk_version = '5.0.402'
sdk_version = '6.0.101'
print("\n* Creating new global.json file and setting SDK to " + sdk_version)
run_cmd(['dotnet', 'new', 'globaljson', '--force', '--sdk-version', sdk_version, '--output', workDir])

View File

@@ -1,9 +1,9 @@
| Assembly1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | no compilation |
| Locations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | has compilation |
| System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | no compilation |
| System.Console, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | no compilation |
| System.Console, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | no compilation |
| System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | no compilation |
| System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e | no compilation |
| System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | no compilation |
| System.Runtime.Extensions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | no compilation |
| System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e | no compilation |
| System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | no compilation |
| System.Runtime.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | no compilation |
| mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | no compilation |

View File

@@ -1,7 +1,14 @@
import semmle.code.cil.Attribute
import semmle.code.cil.Declaration
private predicate isOsSpecific(Declaration d) { d.getQualifiedName().matches("%libobjc%") }
private predicate isOsSpecific(Declaration d) {
d.getQualifiedName()
.matches("%" +
[
"libobjc", "libproc", "System.Diagnostics.Tracing.XplatEventLogger",
"System.Threading.AutoreleasePool"
] + "%")
}
query predicate attrNoArg(string dec, string attr) {
exists(Declaration d, Attribute a |

File diff suppressed because one or more lines are too long

View File

@@ -11,8 +11,8 @@ alwaysNonNull
| System.ArgumentException System.ThrowHelper.GetAddingDuplicateWithKeyArgumentException(System.Object) |
| System.ArgumentException System.ThrowHelper.GetWrongKeyTypeArgumentException(System.Object,System.Type) |
| System.ArgumentException System.ThrowHelper.GetWrongValueTypeArgumentException(System.Object,System.Type) |
| System.ArgumentNullException System.ThrowHelper.GetArgumentNullException(System.ExceptionArgument) |
| System.Collections.Generic.KeyNotFoundException System.ThrowHelper.GetKeyNotFoundException(System.Object) |
| System.Exception System.ThrowHelper.CreateEndOfFileException() |
| System.Exception System.ThrowHelper.GetArraySegmentCtorValidationFailedException(System.Array,System.Int32,System.Int32) |
| System.InvalidOperationException System.ThrowHelper.GetInvalidOperationException_EnumCurrent(System.Int32) |
| System.Object Dataflow.NonNullMethods.ReturnsNonNull2() |
@@ -35,26 +35,35 @@ alwaysThrows
| System.Object Dataflow.ThrowingMethods.get_ThrowProperty() | System.Exception | 0: newobj System.Exception..ctor, 1: throw |
| System.Object Dataflow.ThrowingMethods.get_VirtualThrowProperty() | System.Exception | 0: newobj System.Exception..ctor, 1: throw |
| System.Object System.ValueTuple.get_Item(System.Int32) | System.IndexOutOfRangeException | 0: newobj System.IndexOutOfRangeException..ctor, 1: throw |
| System.Void System.ThrowHelper.ArgumentOutOfRangeException_Enum_Value() | System.ArgumentOutOfRangeException | 0: ldstr "value", 1: call System.SR.get_ArgumentOutOfRange_Enum, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException`1(!0) | System.ArgumentException | 0: ldarg.0, 1: box, 2: call System.ThrowHelper.GetAddingDuplicateWithKeyArgumentException, 3: throw |
| System.Void System.ThrowHelper.ThrowAggregateException(System.Collections.Generic.List<System.Exception>) | System.AggregateException | 0: ldarg.0, 1: newobj System.AggregateException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType() | System.ArgumentException | 0: call System.SR.get_Argument_InvalidArrayType, 1: newobj System.ArgumentException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_BadComparer(System.Object) | System.ArgumentException | 0: call System.SR.get_Arg_BogusIComparer, 1: ldarg.0, 2: call System.SR.Format, 3: newobj System.ArgumentException..ctor, 4: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_CannotExtractScalar(System.ExceptionArgument) | System.ArgumentException | 0: ldc.i4.s 31, 1: ldarg.0, 2: call System.ThrowHelper.GetArgumentException, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_DestinationTooShort() | System.ArgumentException | 0: call System.SR.get_Argument_DestinationTooShort, 1: ldstr "destination", 2: newobj System.ArgumentException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_HandleNotAsync(System.String) | System.ArgumentException | 0: call System.SR.get_Arg_HandleNotAsync, 1: ldarg.0, 2: newobj System.ArgumentException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_HandleNotSync(System.String) | System.ArgumentException | 0: call System.SR.get_Arg_HandleNotSync, 1: ldarg.0, 2: newobj System.ArgumentException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_InvalidHandle(System.String) | System.ArgumentException | 0: call System.SR.get_Arg_InvalidHandle, 1: ldarg.0, 2: newobj System.ArgumentException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_OverlapAlignmentMismatch() | System.ArgumentException | 0: call System.SR.get_Argument_OverlapAlignmentMismatch, 1: newobj System.ArgumentException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument) | System.ArgumentNullException | 0: ldarg.0, 1: call System.ThrowHelper.GetArgumentNullException, 2: throw |
| System.Void System.ThrowHelper.ThrowArgumentException_TupleIncorrectType(System.Object) | System.ArgumentException | 0: call System.SR.get_ArgumentException_ValueTupleIncorrectType, 1: ldarg.0, 2: callvirt System.Object.GetType, 3: call System.SR.Format, 4: ldstr "other", 5: newobj System.ArgumentException..ctor, 6: throw |
| System.Void System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument) | System.ArgumentNullException | 0: ldarg.0, 1: call System.ThrowHelper.GetArgumentName, 2: newobj System.ArgumentNullException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException() | System.ArgumentOutOfRangeException | 0: newobj System.ArgumentOutOfRangeException..ctor, 1: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument) | System.ArgumentOutOfRangeException | 0: ldarg.0, 1: call System.ThrowHelper.GetArgumentName, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException_NeedNonNegNum(System.String) | System.ArgumentOutOfRangeException | 0: ldarg.0, 1: call System.SR.get_ArgumentOutOfRange_NeedNonNegNum, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException_PrecisionTooLarge() | System.ArgumentOutOfRangeException | 0: ldstr "precision", 1: call System.SR.get_Argument_PrecisionTooLarge, 2: ldc.i4.s 31, 3: box, 4: call System.SR.Format, 5: newobj System.ArgumentOutOfRangeException..ctor, 6: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException_SymbolDoesNotFit() | System.ArgumentOutOfRangeException | 0: ldstr "symbol", 1: call System.SR.get_Argument_BadFormatSpecifier, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_BadHourMinuteSecond() | System.ArgumentOutOfRangeException | 0: ldnull, 1: call System.SR.get_ArgumentOutOfRange_BadHourMinuteSecond, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_BadYearMonthDay() | System.ArgumentOutOfRangeException | 0: ldnull, 1: call System.SR.get_ArgumentOutOfRange_BadYearMonthDay, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_DayNumber(System.Int32) | System.ArgumentOutOfRangeException | 0: ldstr "dayNumber", 1: ldarg.0, 2: box, 3: call System.SR.get_ArgumentOutOfRange_DayNumber, 4: newobj System.ArgumentOutOfRangeException..ctor, 5: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_IndexException() | System.ArgumentOutOfRangeException | 0: ldc.i4.s 31, 1: ldc.i4.0, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_Month(System.Int32) | System.ArgumentOutOfRangeException | 0: ldstr "month", 1: ldarg.0, 2: box, 3: call System.SR.get_ArgumentOutOfRange_Month, 4: newobj System.ArgumentOutOfRangeException..ctor, 5: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_TimeSpanTooLong() | System.ArgumentOutOfRangeException | 0: ldnull, 1: call System.SR.get_Overflow_TimeSpanTooLong, 2: newobj System.ArgumentOutOfRangeException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_Year() | System.ArgumentOutOfRangeException | 0: ldc.i4.s 31, 1: ldc.i4.4, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowArraySegmentCtorValidationFailedExceptions(System.Array,System.Int32,System.Int32) | System.Exception | 0: ldarg.0, 1: ldarg.1, 2: ldarg.2, 3: call System.ThrowHelper.GetArraySegmentCtorValidationFailedException, 4: throw |
| System.Void System.ThrowHelper.ThrowArrayTypeMismatchException() | System.ArrayTypeMismatchException | 0: newobj System.ArrayTypeMismatchException..ctor, 1: throw |
| System.Void System.ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count() | System.ArgumentOutOfRangeException | 0: ldc.i4.s 31, 1: ldc.i4.3, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowEndOfFileException() | System.Exception | 0: call System.ThrowHelper.CreateEndOfFileException, 1: throw |
| System.Void System.ThrowHelper.ThrowFormatException_BadFormatSpecifier() | System.FormatException | 0: call System.SR.get_Argument_BadFormatSpecifier, 1: newobj System.FormatException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException() | System.ArgumentOutOfRangeException | 0: ldc.i4.s 31, 1: ldc.i4.s 31, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowIndexOutOfRangeException() | System.IndexOutOfRangeException | 0: newobj System.IndexOutOfRangeException..ctor, 1: throw |
@@ -72,6 +81,12 @@ alwaysThrows
| System.Void System.ThrowHelper.ThrowKeyNotFoundException`1(!0) | System.Collections.Generic.KeyNotFoundException | 0: ldarg.0, 1: box, 2: call System.ThrowHelper.GetKeyNotFoundException, 3: throw |
| System.Void System.ThrowHelper.ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum() | System.ArgumentOutOfRangeException | 0: ldc.i4.s 31, 1: ldc.i4.s 31, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowNotSupportedException() | System.NotSupportedException | 0: newobj System.NotSupportedException..ctor, 1: throw |
| System.Void System.ThrowHelper.ThrowNotSupportedException_UnreadableStream() | System.NotSupportedException | 0: call System.SR.get_NotSupported_UnreadableStream, 1: newobj System.NotSupportedException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowNotSupportedException_UnseekableStream() | System.NotSupportedException | 0: call System.SR.get_NotSupported_UnseekableStream, 1: newobj System.NotSupportedException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowNotSupportedException_UnwritableStream() | System.NotSupportedException | 0: call System.SR.get_NotSupported_UnwritableStream, 1: newobj System.NotSupportedException..ctor, 2: throw |
| System.Void System.ThrowHelper.ThrowObjectDisposedException_FileClosed() | System.ObjectDisposedException | 0: ldnull, 1: call System.SR.get_ObjectDisposed_FileClosed, 2: newobj System.ObjectDisposedException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowObjectDisposedException_StreamClosed(System.String) | System.ObjectDisposedException | 0: ldarg.0, 1: call System.SR.get_ObjectDisposed_StreamClosed, 2: newobj System.ObjectDisposedException..ctor, 3: throw |
| System.Void System.ThrowHelper.ThrowOutOfMemoryException() | System.OutOfMemoryException | 0: newobj System.OutOfMemoryException..ctor, 1: throw |
| System.Void System.ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_Index() | System.ArgumentOutOfRangeException | 0: ldc.i4.8, 1: ldc.i4.0, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowValueArgumentOutOfRange_NeedNonNegNumException() | System.ArgumentOutOfRangeException | 0: ldc.i4.7, 1: ldc.i4.s 31, 2: call System.ThrowHelper.GetArgumentOutOfRangeException, 3: throw |
| System.Void System.ThrowHelper.ThrowWrongKeyTypeArgumentException`1(!0,System.Type) | System.ArgumentException | 0: ldarg.0, 1: box, 2: ldarg.1, 3: call System.ThrowHelper.GetWrongKeyTypeArgumentException, 4: throw |

View File

@@ -5,7 +5,6 @@
| System.Reflection.AssemblyName.CodeBase |
| System.Reflection.AssemblyName.CultureInfo |
| System.Reflection.AssemblyName.HashAlgorithm |
| System.Reflection.AssemblyName.KeyPair |
| System.Reflection.AssemblyName.Name |
| System.Reflection.AssemblyName.Version |
| System.Reflection.AssemblyName.VersionCompatibility |

View File

@@ -6,22 +6,26 @@
| Interop.PollEvents | short |
| Interop.Sys.AccessMode | int |
| Interop.Sys.ControlCharacterNames | int |
| Interop.Sys.CtrlCode | int |
| Interop.Sys.FileAdvice | int |
| Interop.Sys.FileStatusFlags | int |
| Interop.Sys.LockOperations | int |
| Interop.Sys.NodeType | int |
| Interop.Sys.OpenFlags | int |
| Interop.Sys.Permissions | int |
| Interop.Sys.SeekWhence | int |
| Interop.Sys.SysConfName | int |
| Interop.Sys.SysLogPriority | int |
| Interop.Sys.UnixFileSystemTypes | long |
| Microsoft.Win32.SafeHandles.SafeFileHandle.NullableBool | int |
| Microsoft.Win32.SafeHandles.SafeFileHandle.ThreadPoolValueTaskSource.Operation | byte |
| System.AttributeTargets | int |
| System.Base64FormattingOptions | int |
| System.Buffers.ArrayPoolEventSource.BufferAllocatedReason | int |
| System.Buffers.ArrayPoolEventSource.BufferDroppedReason | int |
| System.Buffers.OperationStatus | int |
| System.Buffers.Text.Utf8Parser.ComponentParseResult | byte |
| System.Buffers.Text.Utf8Parser.ParseNumberOptions | int |
| System.Buffers.TlsOverPerCoreLockedStacksArrayPool.MemoryPressure | int |
| System.Buffers.Utilities.MemoryPressure | int |
| System.Collections.Generic.InsertionBehavior | byte |
| System.ComponentModel.EditorBrowsableState | int |
| System.Configuration.Assemblies.AssemblyHashAlgorithm | int |
@@ -43,7 +47,6 @@
| System.Diagnostics.DebuggableAttribute.DebuggingModes | int |
| System.Diagnostics.DebuggerBrowsableState | int |
| System.Diagnostics.StackTrace.TraceFormat | int |
| System.Diagnostics.SymbolStore.SymAddressKind | int |
| System.Diagnostics.Tracing.ControllerCommand | int |
| System.Diagnostics.Tracing.EventActivityOptions | int |
| System.Diagnostics.Tracing.EventChannel | byte |
@@ -55,7 +58,6 @@
| System.Diagnostics.Tracing.EventLevel | int |
| System.Diagnostics.Tracing.EventManifestOptions | int |
| System.Diagnostics.Tracing.EventOpcode | int |
| System.Diagnostics.Tracing.EventPipeMetadataGenerator.MetadataTag | int |
| System.Diagnostics.Tracing.EventPipeSerializationFormat | int |
| System.Diagnostics.Tracing.EventProvider.WriteEventErrorCode | int |
| System.Diagnostics.Tracing.EventProviderType | int |
@@ -63,6 +65,8 @@
| System.Diagnostics.Tracing.EventTags | int |
| System.Diagnostics.Tracing.EventTask | int |
| System.Diagnostics.Tracing.ManifestEnvelope.ManifestFormats | byte |
| System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadAdjustmentReasonMap | uint |
| System.Diagnostics.Tracing.RuntimeEventSource.EventId | int |
| System.Diagnostics.Tracing.TraceLoggingDataType | int |
| System.Environment.SpecialFolder | int |
| System.Environment.SpecialFolderOption | int |
@@ -113,6 +117,10 @@
| System.IO.FileOptions | int |
| System.IO.FileShare | int |
| System.IO.HandleInheritability | int |
| System.IO.MatchCasing | int |
| System.IO.MatchType | int |
| System.IO.SearchOption | int |
| System.IO.SearchTarget | int |
| System.IO.SeekOrigin | int |
| System.LazyState | int |
| System.LoaderOptimization | int |
@@ -153,6 +161,8 @@
| System.Reflection.MethodAttributes | int |
| System.Reflection.MethodImplAttributes | int |
| System.Reflection.MethodSemanticsAttributes | int |
| System.Reflection.NullabilityInfoContext.NotAnnotatedStatus | int |
| System.Reflection.NullabilityState | int |
| System.Reflection.PInvokeAttributes | int |
| System.Reflection.ParameterAttributes | int |
| System.Reflection.PortableExecutableKinds | int |
@@ -192,6 +202,7 @@
| System.Runtime.InteropServices.ComTypes.TYPEKIND | int |
| System.Runtime.InteropServices.ComTypes.VARFLAGS | short |
| System.Runtime.InteropServices.ComTypes.VARKIND | int |
| System.Runtime.InteropServices.ComWrappersScenario | int |
| System.Runtime.InteropServices.CreateComInterfaceFlags | int |
| System.Runtime.InteropServices.CreateObjectFlags | int |
| System.Runtime.InteropServices.CustomQueryInterfaceMode | int |
@@ -199,6 +210,8 @@
| System.Runtime.InteropServices.DllImportSearchPath | int |
| System.Runtime.InteropServices.GCHandleType | int |
| System.Runtime.InteropServices.LayoutKind | int |
| System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.MessageSendFunction | int |
| System.Runtime.InteropServices.PosixSignal | int |
| System.Runtime.InteropServices.UnmanagedType | int |
| System.Runtime.InteropServices.VarEnum | int |
| System.Runtime.Intrinsics.X86.FloatComparisonMode | byte |
@@ -229,6 +242,9 @@
| System.Threading.EventResetMode | int |
| System.Threading.LazyThreadSafetyMode | int |
| System.Threading.LockRecursionPolicy | int |
| System.Threading.OpenExistingResult | int |
| System.Threading.PortableThreadPool.HillClimbing.StateOrTransition | int |
| System.Threading.PortableThreadPool.PendingBlockingAdjustment | byte |
| System.Threading.ReaderWriterLockSlim.EnterLockType | int |
| System.Threading.ReaderWriterLockSlim.EnterSpinLockReason | int |
| System.Threading.ReaderWriterLockSlim.WaiterStates | byte |
@@ -240,13 +256,13 @@
| System.Threading.Tasks.InternalTaskOptions | int |
| System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags | int |
| System.Threading.Tasks.Sources.ValueTaskSourceStatus | int |
| System.Threading.Tasks.Task.TaskStateFlags | int |
| System.Threading.Tasks.TaskContinuationOptions | int |
| System.Threading.Tasks.TaskCreationOptions | int |
| System.Threading.Tasks.TaskStatus | int |
| System.Threading.Tasks.TplEventSource.TaskWaitBehavior | int |
| System.Threading.ThreadPriority | int |
| System.Threading.ThreadState | int |
| System.Threading.WaitHandle.OpenExistingResult | int |
| System.TimeZoneInfo.StringSerializer.State | int |
| System.TimeZoneInfo.TZVersion | byte |
| System.TimeZoneInfo.TimeZoneInfoResult | int |

View File

@@ -6,9 +6,16 @@ fnptr
| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | 2 | Int32 | 0 |
| delegate* managed<Int32*,Void*> | 1 | Void* | 0 |
| delegate* managed<Int32> | 0 | Int32 | 0 |
| delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | 3 | void | 0 |
| delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 3 | void | 0 |
| delegate* managed<Object,Void> | 1 | void | 0 |
| delegate* managed<Void*,Int32*> | 1 | Int32* | 0 |
| delegate* managed<Void*,Object> | 1 | Object | 0 |
| delegate* unmanaged<Char*,IntPtr,Void> | 2 | void | 9 |
| delegate* unmanaged<Int32,PosixSignal,Int32> | 2 | Int32 | 9 |
| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 3 | Int32 | 9 |
| delegate* unmanaged<IntPtr,Int32> | 1 | Int32 | 9 |
| delegate* unmanaged<IntPtr,Void> | 1 | void | 9 |
| delegate* unmanaged<Void> | 0 | void | 9 |
| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 3 | void | 2 |
params
| delegate* managed<!0,Int32> | 0 | Parameter 0 of delegate* managed<!0,Int32> | !0 |
@@ -20,12 +27,21 @@ params
| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | 0 | Parameter 0 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | Int32& |
| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | 1 | Parameter 1 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | Object& |
| delegate* managed<Int32*,Void*> | 0 | Parameter 0 of delegate* managed<Int32*,Void*> | Int32* |
| delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | 0 | Parameter 0 of delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | IntPtr |
| delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | 1 | Parameter 1 of delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | IntPtr |
| delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | 2 | Parameter 2 of delegate* managed<IntPtr,IntPtr,IntPtr*,Void> | IntPtr* |
| delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 0 | Parameter 0 of delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | IntPtr |
| delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 1 | Parameter 1 of delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | IntPtr |
| delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 2 | Parameter 2 of delegate* managed<IntPtr,IntPtr,PortableTailCallFrame*,Void> | PortableTailCallFrame* |
| delegate* managed<Object,Void> | 0 | Parameter 0 of delegate* managed<Object,Void> | Object |
| delegate* managed<Void*,Int32*> | 0 | Parameter 0 of delegate* managed<Void*,Int32*> | Void* |
| delegate* managed<Void*,Object> | 0 | Parameter 0 of delegate* managed<Void*,Object> | Void* |
| delegate* unmanaged<Char*,IntPtr,Void> | 0 | Parameter 0 of delegate* unmanaged<Char*,IntPtr,Void> | Char* |
| delegate* unmanaged<Char*,IntPtr,Void> | 1 | Parameter 1 of delegate* unmanaged<Char*,IntPtr,Void> | IntPtr |
| delegate* unmanaged<Int32,PosixSignal,Int32> | 0 | Parameter 0 of delegate* unmanaged<Int32,PosixSignal,Int32> | Int32 |
| delegate* unmanaged<Int32,PosixSignal,Int32> | 1 | Parameter 1 of delegate* unmanaged<Int32,PosixSignal,Int32> | PosixSignal |
| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 0 | Parameter 0 of delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | IntPtr |
| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 1 | Parameter 1 of delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | Guid* |
| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 2 | Parameter 2 of delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | IntPtr* |
| delegate* unmanaged<IntPtr,Int32> | 0 | Parameter 0 of delegate* unmanaged<IntPtr,Int32> | IntPtr |
| delegate* unmanaged<IntPtr,Void> | 0 | Parameter 0 of delegate* unmanaged<IntPtr,Void> | IntPtr |
| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 0 | Parameter 0 of delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | Int32& |
| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 1 | Parameter 1 of delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | Object& |
| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 2 | Parameter 2 of delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | !0 |

View File

@@ -4,20 +4,19 @@
| Invoke | System.Runtime.InteropServices.InAttribute | modreq |
| Max | System.Runtime.InteropServices.InAttribute | modreq |
| Min | System.Runtime.InteropServices.InAttribute | modreq |
| ThreadIDExecutingCallbacks | System.Runtime.CompilerServices.IsVolatile | modreq |
| Value | System.Runtime.CompilerServices.IsVolatile | modreq |
| _bufferedValuesIndex | System.Runtime.CompilerServices.IsVolatile | modreq |
| _callbackPartitions | System.Runtime.CompilerServices.IsVolatile | modreq |
| _canceled | System.Runtime.CompilerServices.IsVolatile | modreq |
| _canSeek | System.Runtime.CompilerServices.IsVolatile | modreq |
| _container | System.Runtime.CompilerServices.IsVolatile | modreq |
| _fullyInitialized | System.Runtime.CompilerServices.IsVolatile | modreq |
| _head | System.Runtime.CompilerServices.IsVolatile | modreq |
| _idsThatDoNotTrackAllValues | System.Runtime.CompilerServices.IsVolatile | modreq |
| _initialized | System.Runtime.CompilerServices.IsVolatile | modreq |
| _isFullyInitialized | System.Runtime.CompilerServices.IsVolatile | modreq |
| _isWriterInProgress | System.Runtime.CompilerServices.IsVolatile | modreq |
| _kernelEvent | System.Runtime.CompilerServices.IsVolatile | modreq |
| _localTimeZone | System.Runtime.CompilerServices.IsVolatile | modreq |
| _next | System.Runtime.CompilerServices.IsVolatile | modreq |
| _notifyWhenNoCallbacksRunning | System.Runtime.CompilerServices.IsVolatile | modreq |
| _oldKeepAlive | System.Runtime.CompilerServices.IsVolatile | modreq |
| _owner | System.Runtime.CompilerServices.IsVolatile | modreq |
| _previous | System.Runtime.CompilerServices.IsVolatile | modreq |
@@ -27,8 +26,8 @@
| _saShortTimes | System.Runtime.CompilerServices.IsVolatile | modreq |
| _slotArray | System.Runtime.CompilerServices.IsVolatile | modreq |
| _state | System.Runtime.CompilerServices.IsVolatile | modreq |
| _supportsRandomAccess | System.Runtime.CompilerServices.IsVolatile | modreq |
| _tail | System.Runtime.CompilerServices.IsVolatile | modreq |
| _threadIDExecutingCallbacks | System.Runtime.CompilerServices.IsVolatile | modreq |
| _timer | System.Runtime.CompilerServices.IsVolatile | modreq |
| _version | System.Runtime.CompilerServices.IsVolatile | modreq |
| _waCalendars | System.Runtime.CompilerServices.IsVolatile | modreq |
@@ -63,34 +62,39 @@
| m_mask | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_nameIsCached | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_rawManifest | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_signature | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_stateFlags | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_tail | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_tailIndex | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_taskId | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_taskSchedulerId | System.Runtime.CompilerServices.IsVolatile | modreq |
| m_waitHandle | System.Runtime.CompilerServices.IsVolatile | modreq |
| numOutstandingThreadRequests | System.Runtime.CompilerServices.IsVolatile | modreq |
| numRequestedWorkers | System.Runtime.CompilerServices.IsVolatile | modreq |
| property Current | System.Runtime.InteropServices.InAttribute | modreq |
| property Item | System.Runtime.InteropServices.InAttribute | modreq |
| s_DefaultThreadCurrentCulture | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_DefaultThreadCurrentUICulture | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_Invariant | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_allContexts | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_anonymouslyHostedDynamicMethodsModule | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_cachedCultures | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_cachedCulturesByLcid | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_cachedCulturesByName | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_cachedRegions | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_canceledTask | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_currentRegionInfo | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_defaultBinder | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_defaultFlowSuppressed | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_defaultInstance | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_emitAnsiColorCodes | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_encoding | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_haveProcessId | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_indentSize | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_initialized | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_invariantInfo | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_jajpDTFI | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_japaneseEraInfo | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_osVersion | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_processId | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_processPath | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_provider | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_providers | System.Runtime.CompilerServices.IsVolatile | modreq |
| s_regionNames | System.Runtime.CompilerServices.IsVolatile | modreq |

View File

@@ -1,31 +1,59 @@
import cil
import semmle.code.cil.Type
private string elementType(Element e) {
e instanceof Method and result = "method"
private string elementType(Element e, string toString) {
toString = e.(Method).getQualifiedName() and result = "method"
or
e instanceof Property and result = "property"
toString = e.(Property).getQualifiedName() and result = "property"
or
e instanceof Parameter and result = "parameter"
e =
any(Parameter p |
toString = "Parameter " + p.getIndex() + " of " + p.getDeclaringElement().getQualifiedName()
) and
result = "parameter"
or
e instanceof LocalVariable and result = "local"
e =
any(LocalVariable v |
toString =
"Local variable " + v.getIndex() + " of method " +
v.getImplementation().getMethod().getQualifiedName()
) and
result = "local"
or
e instanceof FunctionPointerType and result = "fnptr"
toString = e.(FunctionPointerType).getQualifiedName() and result = "fnptr"
or
not e instanceof Method and
not e instanceof Property and
not e instanceof Parameter and
not e instanceof LocalVariable and
not e instanceof FunctionPointerType and
result = "other"
result = "other" and
toString = e.toString()
}
from Element e, int i
private predicate exclude(string s) {
s in [
"Parameter 0 of Interop.libobjc.NSOperatingSystemVersion_objc_msgSend_stret",
"Parameter 1 of Interop.procfs.TryParseStatusFile",
"Parameter 1 of Interop.procfs.TryReadFile",
"Parameter 1 of Interop.procfs.TryReadStatusFile",
"Parameter 1 of System.CLRConfig.GetBoolValue",
"Parameter 1 of System.CLRConfig.GetConfigBoolValue",
"Parameter 1 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandleInternal",
"Parameter 2 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandleInternal",
"Parameter 2 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.InvokeUnhandledExceptionPropagation",
]
}
from Element e, int i, string toString, string type
where
cil_type_annotation(e, i) and
type = elementType(e, toString) and
not exclude(toString) and
(
not e instanceof Parameter or
not e instanceof Parameter
or
e.(Parameter).getDeclaringElement().(Method).getDeclaringType().getQualifiedName() !=
"System.Environment" // There are OS specific methods in this class
)
select e.toString(), elementType(e), i
select toString, type, i

View File

@@ -2775,7 +2775,7 @@ Assert.cs:
#-----| true -> access to parameter b2
# 140| [assertion failure] access to parameter b2
#-----| true -> [assertion failure] access to parameter b3
#-----| false -> [assertion failure] access to parameter b3
# 140| access to parameter b2
#-----| false -> [assertion success] access to parameter b3

View File

@@ -5,10 +5,34 @@
| Boolean | Object |
| Boolean | ValueType |
| Boolean | dynamic |
| Char | IAdditionOperators<Char,Char,Char> |
| Char | IAdditiveIdentity<Char,Char> |
| Char | IBinaryInteger<Char> |
| Char | IBinaryNumber<Char> |
| Char | IBitwiseOperators<Char,Char,Char> |
| Char | IComparable |
| Char | IComparable<Char> |
| Char | IComparisonOperators<Char,Char> |
| Char | IConvertible |
| Char | IDecrementOperators<Char> |
| Char | IDivisionOperators<Char,Char,Char> |
| Char | IEqualityOperators<Char,Char> |
| Char | IEquatable<Char> |
| Char | IFormattable |
| Char | IIncrementOperators<Char> |
| Char | IMinMaxValue<Char> |
| Char | IModulusOperators<Char,Char,Char> |
| Char | IMultiplicativeIdentity<Char,Char> |
| Char | IMultiplyOperators<Char,Char,Char> |
| Char | INumber<Char> |
| Char | IParseable<Char> |
| Char | IShiftOperators<Char,Char> |
| Char | ISpanFormattable |
| Char | ISpanParseable<Char> |
| Char | ISubtractionOperators<Char,Char,Char> |
| Char | IUnaryNegationOperators<Char,Char> |
| Char | IUnaryPlusOperators<Char,Char> |
| Char | IUnsignedNumber<Char> |
| Char | Object |
| Char | ValueType |
| Char | dynamic |
@@ -16,21 +40,65 @@
| E | Object |
| E | ValueType |
| E | dynamic |
| Int32 | IAdditionOperators<Int32,Int32,Int32> |
| Int32 | IAdditiveIdentity<Int32,Int32> |
| Int32 | IBinaryInteger<Int32> |
| Int32 | IBinaryNumber<Int32> |
| Int32 | IBitwiseOperators<Int32,Int32,Int32> |
| Int32 | IComparable |
| Int32 | IComparable<Int32> |
| Int32 | IComparisonOperators<Int32,Int32> |
| Int32 | IConvertible |
| Int32 | IDecrementOperators<Int32> |
| Int32 | IDivisionOperators<Int32,Int32,Int32> |
| Int32 | IEqualityOperators<Int32,Int32> |
| Int32 | IEquatable<Int32> |
| Int32 | IFormattable |
| Int32 | IIncrementOperators<Int32> |
| Int32 | IMinMaxValue<Int32> |
| Int32 | IModulusOperators<Int32,Int32,Int32> |
| Int32 | IMultiplicativeIdentity<Int32,Int32> |
| Int32 | IMultiplyOperators<Int32,Int32,Int32> |
| Int32 | INumber<Int32> |
| Int32 | IParseable<Int32> |
| Int32 | IShiftOperators<Int32,Int32> |
| Int32 | ISignedNumber<Int32> |
| Int32 | ISpanFormattable |
| Int32 | ISpanParseable<Int32> |
| Int32 | ISubtractionOperators<Int32,Int32,Int32> |
| Int32 | IUnaryNegationOperators<Int32,Int32> |
| Int32 | IUnaryPlusOperators<Int32,Int32> |
| Int32 | Object |
| Int32 | ValueType |
| Int32 | dynamic |
| Nullable<Int32> | IAdditionOperators<Int32,Int32,Int32> |
| Nullable<Int32> | IAdditiveIdentity<Int32,Int32> |
| Nullable<Int32> | IBinaryInteger<Int32> |
| Nullable<Int32> | IBinaryNumber<Int32> |
| Nullable<Int32> | IBitwiseOperators<Int32,Int32,Int32> |
| Nullable<Int32> | IComparable |
| Nullable<Int32> | IComparable<Int32> |
| Nullable<Int32> | IComparisonOperators<Int32,Int32> |
| Nullable<Int32> | IConvertible |
| Nullable<Int32> | IDecrementOperators<Int32> |
| Nullable<Int32> | IDivisionOperators<Int32,Int32,Int32> |
| Nullable<Int32> | IEqualityOperators<Int32,Int32> |
| Nullable<Int32> | IEquatable<Int32> |
| Nullable<Int32> | IFormattable |
| Nullable<Int32> | IIncrementOperators<Int32> |
| Nullable<Int32> | IMinMaxValue<Int32> |
| Nullable<Int32> | IModulusOperators<Int32,Int32,Int32> |
| Nullable<Int32> | IMultiplicativeIdentity<Int32,Int32> |
| Nullable<Int32> | IMultiplyOperators<Int32,Int32,Int32> |
| Nullable<Int32> | INumber<Int32> |
| Nullable<Int32> | IParseable<Int32> |
| Nullable<Int32> | IShiftOperators<Int32,Int32> |
| Nullable<Int32> | ISignedNumber<Int32> |
| Nullable<Int32> | ISpanFormattable |
| Nullable<Int32> | ISpanParseable<Int32> |
| Nullable<Int32> | ISubtractionOperators<Int32,Int32,Int32> |
| Nullable<Int32> | IUnaryNegationOperators<Int32,Int32> |
| Nullable<Int32> | IUnaryPlusOperators<Int32,Int32> |
| Nullable<Int32> | Object |
| Nullable<Int32> | ValueType |
| Nullable<Int32> | dynamic |

View File

@@ -1,7 +1,5 @@
| Byte[] | Object |
| Byte[] | dynamic |
| Byte[][] | Object |
| Byte[][] | dynamic |
| C1 | Object |
| C1 | dynamic |
| C1[] | ICollection<C1> |
@@ -233,7 +231,6 @@
| UInt64[] | dynamic |
| dynamic | Object |
| null | Byte[] |
| null | Byte[][] |
| null | C1 |
| null | C1[] |
| null | C2 |

View File

@@ -5,11 +5,17 @@ type
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 ref readonly> | readonly int | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<Int32*,Void*> | Void* | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<Int32> | int | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,IntPtr*,Void> | Void | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,PortableTailCallFrame*,Void> | Void | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<Object,Void> | Void | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<T,Int32> | int | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<Void*,Int32*> | int* | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* default<Void*,Object> | object | DefaultCallingConvention |
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | Void | StdCallCallingConvention |
| file://:0:0:0:0 | delegate* unmanaged<Char*,IntPtr,Void> | Void | CallingConvention |
| file://:0:0:0:0 | delegate* unmanaged<Int32,PosixSignal,Int32> | int | CallingConvention |
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Int32> | int | CallingConvention |
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Void> | Void | CallingConvention |
| file://:0:0:0:0 | delegate* unmanaged<Void> | Void | CallingConvention |
unmanagedCallingConvention
parameter
| file://:0:0:0:0 | delegate* default<A,B> | 0 | file://:0:0:0:0 | | A |
@@ -20,16 +26,22 @@ parameter
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 ref readonly> | 0 | file://:0:0:0:0 | | ref int! |
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 ref readonly> | 1 | file://:0:0:0:0 | `1 | out object? |
| file://:0:0:0:0 | delegate* default<Int32*,Void*> | 0 | file://:0:0:0:0 | | int*! |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,IntPtr*,Void> | 0 | file://:0:0:0:0 | | IntPtr! |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,IntPtr*,Void> | 1 | file://:0:0:0:0 | `1 | IntPtr! |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,IntPtr*,Void> | 2 | file://:0:0:0:0 | `2 | IntPtr*! |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 0 | file://:0:0:0:0 | | IntPtr! |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 1 | file://:0:0:0:0 | `1 | IntPtr! |
| file://:0:0:0:0 | delegate* default<IntPtr,IntPtr,PortableTailCallFrame*,Void> | 2 | file://:0:0:0:0 | `2 | PortableTailCallFrame*! |
| file://:0:0:0:0 | delegate* default<Object,Void> | 0 | file://:0:0:0:0 | | object |
| file://:0:0:0:0 | delegate* default<T,Int32> | 0 | file://:0:0:0:0 | | T |
| file://:0:0:0:0 | delegate* default<Void*,Int32*> | 0 | file://:0:0:0:0 | | Void*! |
| file://:0:0:0:0 | delegate* default<Void*,Object> | 0 | file://:0:0:0:0 | | Void*! |
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | 0 | file://:0:0:0:0 | | ref int! |
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | 1 | file://:0:0:0:0 | `1 | out object? |
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | 2 | file://:0:0:0:0 | `2 | T |
| file://:0:0:0:0 | delegate* unmanaged<Char*,IntPtr,Void> | 0 | file://:0:0:0:0 | | char*! |
| file://:0:0:0:0 | delegate* unmanaged<Char*,IntPtr,Void> | 1 | file://:0:0:0:0 | `1 | IntPtr! |
| file://:0:0:0:0 | delegate* unmanaged<Int32,PosixSignal,Int32> | 0 | file://:0:0:0:0 | | int! |
| file://:0:0:0:0 | delegate* unmanaged<Int32,PosixSignal,Int32> | 1 | file://:0:0:0:0 | `1 | PosixSignal! |
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Int32> | 0 | file://:0:0:0:0 | | IntPtr! |
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Void> | 0 | file://:0:0:0:0 | | IntPtr! |
invocation
| FunctionPointer.cs:17:21:17:43 | function pointer call |
| FunctionPointer.cs:23:13:23:44 | function pointer call |

View File

@@ -213,11 +213,20 @@
| ViableCallable.cs:174:19:174:25 | dynamic access to element | get_Item | C2<> |
| ViableCallable.cs:174:19:174:25 | dynamic access to element | get_Item | C6<,> |
| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Decimal |
| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Double |
| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Int32 |
| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Int64 |
| ViableCallable.cs:178:13:178:17 | dynamic call to operator + | + | Single |
| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Decimal |
| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Double |
| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Int32 |
| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Int64 |
| ViableCallable.cs:180:13:180:17 | dynamic call to operator - | - | Single |
| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Decimal |
| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Double |
| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Int32 |
| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Int64 |
| ViableCallable.cs:182:13:182:18 | dynamic call to operator + | + | Single |
| ViableCallable.cs:185:17:185:25 | object creation of type C10 | C10 | C10 |
| ViableCallable.cs:186:9:186:153 | call to method InvokeMember | + | C10 |
| ViableCallable.cs:189:9:189:143 | call to method InvokeMember | get_Prop3 | C10 |

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>bin\</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>