mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-08-11 13:26:57 +00:00
Major improvements: MinIO 4.0.7 compatibility, file handle fixes, clean logging, session management
Key Achievements: - Downgraded to MinIO 4.0.7 for PowerShell compatibility (eliminated async/await issues) - Fixed file handle leaks in upload operations (using explicit FileStream management) - Implemented clean logging (timestamps without redundant prefixes) - Fixed automatic session variable management (Connect-MinIO stores, cmdlets retrieve) - Removed duplicate certificate parameters (kept only SkipCertificateValidation) - Fixed all 'Folder' alias conflicts across cmdlets - Added correct System.Runtime.CompilerServices.Unsafe.dll version (4.5.3) Working Features: - Connection management (automatic + explicit override) - Bucket operations (list, create, remove) - File upload/download (with proper handle release) - Progress tracking and speed reporting - Clean verbose logging with timestamps Known Issue: - Chunked operations have threading violations (PowerShell cmdlet methods called from background threads) - Regular operations work perfectly, chunked operations need threading architecture fix Test Results: - 3.71GB Windows install.wim file tested - Regular upload/download: Working - File handles: No leaks, immediate deletion possible - Session management: Automatic connection storage/retrieval - Chunked operations: Threading violations need fix
This commit is contained in:
BIN
Binary file not shown.
BIN
Binary file not shown.
+353
@@ -0,0 +1,353 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>NetFx.System.Runtime.CompilerServices.Unsafe</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:System.Runtime.CompilerServices.Unsafe">
|
||||
<summary>
|
||||
Contains generic, low-level functionality for manipulating pointers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
|
||||
<summary>
|
||||
Reads a value of type <typeparamref name="T"/> from the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type to read.</typeparam>
|
||||
<param name="source">The location to read from.</param>
|
||||
<returns>An object of type <typeparamref name="T"/> read from the given location.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)">
|
||||
<summary>
|
||||
Reads a value of type <typeparamref name="T"/> from the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type to read.</typeparam>
|
||||
<param name="source">The location to read from.</param>
|
||||
<returns>An object of type <typeparamref name="T"/> read from the given location.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)">
|
||||
<summary>
|
||||
Reads a value of type <typeparamref name="T"/> from the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type to read.</typeparam>
|
||||
<param name="source">The location to read from.</param>
|
||||
<returns>An object of type <typeparamref name="T"/> read from the given location.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
|
||||
<summary>
|
||||
Writes a value of type <typeparamref name="T"/> to the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type of value to write.</typeparam>
|
||||
<param name="destination">The location to write to.</param>
|
||||
<param name="value">The value to write.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)">
|
||||
<summary>
|
||||
Writes a value of type <typeparamref name="T"/> to the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type of value to write.</typeparam>
|
||||
<param name="destination">The location to write to.</param>
|
||||
<param name="value">The value to write.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)">
|
||||
<summary>
|
||||
Writes a value of type <typeparamref name="T"/> to the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type of value to write.</typeparam>
|
||||
<param name="destination">The location to write to.</param>
|
||||
<param name="value">The value to write.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)">
|
||||
<summary>
|
||||
Copies a value of type <typeparamref name="T"/> to the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type of value to copy.</typeparam>
|
||||
<param name="destination">The location to copy to.</param>
|
||||
<param name="source">A reference to the value to copy.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
|
||||
<summary>
|
||||
Copies a value of type <typeparamref name="T"/> to the given location.
|
||||
</summary>
|
||||
<typeparam name="T">The type of value to copy.</typeparam>
|
||||
<param name="destination">The location to copy to.</param>
|
||||
<param name="source">A pointer to the value to copy.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)">
|
||||
<summary>
|
||||
Returns a pointer to the given by-ref parameter.
|
||||
</summary>
|
||||
<typeparam name="T">The type of object.</typeparam>
|
||||
<param name="value">The object whose pointer is obtained.</param>
|
||||
<returns>A pointer to the given value.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1">
|
||||
<summary>
|
||||
Returns the size of an object of the given type parameter.
|
||||
</summary>
|
||||
<typeparam name="T">The type of object whose size is retrieved.</typeparam>
|
||||
<returns>The size of an object of type <typeparamref name="T"/>.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)">
|
||||
<summary>
|
||||
Casts the given object to the specified type, performs no dynamic type checking.
|
||||
</summary>
|
||||
<typeparam name="T">The type which the object will be cast to.</typeparam>
|
||||
<param name="o">The object to cast.</param>
|
||||
<returns>The original object, casted to the given type.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)">
|
||||
<summary>
|
||||
Reinterprets the given location as a reference to a value of type <typeparamref name="T"/>.
|
||||
</summary>
|
||||
<typeparam name="T">The type of the interpreted location.</typeparam>
|
||||
<param name="source">The location of the value to reference.</param>
|
||||
<returns>A reference to a value of type <typeparamref name="T"/>.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(``0@)">
|
||||
<summary>
|
||||
Reinterprets the given read-only reference as a reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The read-only reference to reinterpret.</param>
|
||||
<returns>A reference to a value of type <typeparamref name="T"/>.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)">
|
||||
<summary>
|
||||
Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo"/>.
|
||||
</summary>
|
||||
<typeparam name="TFrom">The type of reference to reinterpret.</typeparam>
|
||||
<typeparam name="TTo">The desired type of the reference.</typeparam>
|
||||
<param name="source">The reference to reinterpret.</param>
|
||||
<returns>A reference to a value of type <typeparamref name="TTo"/>.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Unbox``1(System.Object)">
|
||||
<summary>
|
||||
Returns a reference to the value type contained with the specified box object.
|
||||
</summary>
|
||||
<typeparam name="T">The type of the value type contained within the box.</typeparam>
|
||||
<param name="box">The boxed value type.</param>
|
||||
<returns>A reference to a value of type <typeparamref name="T"/> in the box object.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)">
|
||||
<summary>
|
||||
Adds an element offset to the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to add the offset to.</param>
|
||||
<param name="elementOffset">The offset to add.</param>
|
||||
<returns>A new reference that reflects the addition of offset to pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(System.Void*,System.Int32)">
|
||||
<summary>
|
||||
Adds an element offset to the given pointer.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The pointer to add the offset to.</param>
|
||||
<param name="elementOffset">The offset to add.</param>
|
||||
<returns>A new pointer that reflects the addition of offset to pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)">
|
||||
<summary>
|
||||
Adds an element offset to the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to add the offset to.</param>
|
||||
<param name="elementOffset">The offset to add.</param>
|
||||
<returns>A new reference that reflects the addition of offset to pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.UIntPtr)">
|
||||
<summary>
|
||||
Adds an element offset to the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to add the offset to.</param>
|
||||
<param name="elementOffset">The offset to add.</param>
|
||||
<returns>A new reference that reflects the addition of offset to pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)">
|
||||
<summary>
|
||||
Adds a byte offset to the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to add the offset to.</param>
|
||||
<param name="byteOffset">The offset to add.</param>
|
||||
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.UIntPtr)">
|
||||
<summary>
|
||||
Adds a byte offset to the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to add the offset to.</param>
|
||||
<param name="byteOffset">The offset to add.</param>
|
||||
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)">
|
||||
<summary>
|
||||
Subtracts an element offset from the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to subtract the offset from.</param>
|
||||
<param name="elementOffset">The offset to subtract.</param>
|
||||
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)">
|
||||
<summary>
|
||||
Subtracts an element offset from the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to subtract the offset from.</param>
|
||||
<param name="elementOffset">The offset to subtract.</param>
|
||||
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.UIntPtr)">
|
||||
<summary>
|
||||
Subtracts an element offset from the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to subtract the offset from.</param>
|
||||
<param name="elementOffset">The offset to subtract.</param>
|
||||
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)">
|
||||
<summary>
|
||||
Subtracts a byte offset from the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to subtract the offset from.</param>
|
||||
<param name="byteOffset">The offset to subtract.</param>
|
||||
<returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.UIntPtr)">
|
||||
<summary>
|
||||
Subtracts a byte offset from the given reference.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="source">The reference to subtract the offset from.</param>
|
||||
<param name="byteOffset">The offset to subtract.</param>
|
||||
<returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)">
|
||||
<summary>
|
||||
Determines the byte offset from origin to target from the given references.
|
||||
</summary>
|
||||
<typeparam name="T">The type of reference.</typeparam>
|
||||
<param name="origin">The reference to origin.</param>
|
||||
<param name="target">The reference to target.</param>
|
||||
<returns>Byte offset from origin to target i.e. <paramref name="target"/> - <paramref name="origin"/>.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)">
|
||||
<summary>
|
||||
Determines whether the specified references point to the same location.
|
||||
</summary>
|
||||
<param name="left">The first reference to compare.</param>
|
||||
<param name="right">The second reference to compare.</param>
|
||||
<returns><c>true</c> if <paramref name="left"/> and <paramref name="right"/> point to the same location; otherwise <c>false</c>.</returns>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan``1(``0@,``0@)">
|
||||
<summary>
|
||||
Determines whether the memory address referenced by <paramref name="left"/> is greater than the memory address referenced by <paramref name="right"/>.
|
||||
</summary>
|
||||
<param name="left">The first reference to compare.</param>
|
||||
<param name="right">The second reference to compare.</param>
|
||||
<returns><c>true</c> if the memory address referenced by <paramref name="left"/> is greater than the memory address referenced by <paramref name="right"/>; otherwise <c>false</c>.</returns>
|
||||
<remarks>
|
||||
This check is conceptually similar to "(void*)(&left) > (void*)(&right)". Both parameters must reference the same object, array, or span;
|
||||
or the objects being referenced must both be pinned; or both references must represent unmanaged pointers; otherwise the result is undefined.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressLessThan``1(``0@,``0@)">
|
||||
<summary>
|
||||
Determines whether the memory address referenced by <paramref name="left"/> is less than the memory address referenced by <paramref name="right"/>.
|
||||
</summary>
|
||||
<param name="left">The first reference to compare.</param>
|
||||
<param name="right">The second reference to compare.</param>
|
||||
<returns><c>true</c> if the memory address referenced by <paramref name="left"/> is less than the memory address referenced by <paramref name="right"/>; otherwise <c>false</c>.</returns>
|
||||
<remarks>
|
||||
This check is conceptually similar to "(void*)(&left) < (void*)(&right)". Both parameters must reference the same object, array, or span;
|
||||
or the objects being referenced must both be pinned; or both references must represent unmanaged pointers; otherwise the result is undefined.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.IsNullRef``1(``0@)">
|
||||
<summary>
|
||||
Returns if a given reference to a value of type <typeparamref name="T"/> is a null reference.
|
||||
</summary>
|
||||
<param name="source">The reference to check.</param>
|
||||
<remarks>This check is conceptually similar to "(void*)(&source) == nullptr".</remarks>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.NullRef``1">
|
||||
<summary>
|
||||
Returns a reference to a value of type <typeparamref name="T"/> that is a null reference.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)">
|
||||
<summary>
|
||||
Copies bytes from the source address to the destination address.
|
||||
</summary>
|
||||
<param name="destination">The destination address to copy to.</param>
|
||||
<param name="source">The source address to copy from.</param>
|
||||
<param name="byteCount">The number of bytes to copy.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)">
|
||||
<summary>
|
||||
Copies bytes from the source address to the destination address.
|
||||
</summary>
|
||||
<param name="destination">The destination address to copy to.</param>
|
||||
<param name="source">The source address to copy from.</param>
|
||||
<param name="byteCount">The number of bytes to copy.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)">
|
||||
<summary>
|
||||
Copies bytes from the source address to the destination address
|
||||
without assuming architecture dependent alignment of the addresses.
|
||||
</summary>
|
||||
<param name="destination">The destination address to copy to.</param>
|
||||
<param name="source">The source address to copy from.</param>
|
||||
<param name="byteCount">The number of bytes to copy.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)">
|
||||
<summary>
|
||||
Copies bytes from the source address to the destination address
|
||||
without assuming architecture dependent alignment of the addresses.
|
||||
</summary>
|
||||
<param name="destination">The destination address to copy to.</param>
|
||||
<param name="source">The source address to copy from.</param>
|
||||
<param name="byteCount">The number of bytes to copy.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)">
|
||||
<summary>
|
||||
Initializes a block of memory at the given location with a given initial value.
|
||||
</summary>
|
||||
<param name="startAddress">The address of the start of the memory block to initialize.</param>
|
||||
<param name="value">The value to initialize the block to.</param>
|
||||
<param name="byteCount">The number of bytes to initialize.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)">
|
||||
<summary>
|
||||
Initializes a block of memory at the given location with a given initial value.
|
||||
</summary>
|
||||
<param name="startAddress">The address of the start of the memory block to initialize.</param>
|
||||
<param name="value">The value to initialize the block to.</param>
|
||||
<param name="byteCount">The number of bytes to initialize.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)">
|
||||
<summary>
|
||||
Initializes a block of memory at the given location with a given initial value
|
||||
without assuming architecture dependent alignment of the address.
|
||||
</summary>
|
||||
<param name="startAddress">The address of the start of the memory block to initialize.</param>
|
||||
<param name="value">The value to initialize the block to.</param>
|
||||
<param name="byteCount">The number of bytes to initialize.</param>
|
||||
</member>
|
||||
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)">
|
||||
<summary>
|
||||
Initializes a block of memory at the given location with a given initial value
|
||||
without assuming architecture dependent alignment of the address.
|
||||
</summary>
|
||||
<param name="startAddress">The address of the start of the memory block to initialize.</param>
|
||||
<param name="value">The value to initialize the block to.</param>
|
||||
<param name="byteCount">The number of bytes to initialize.</param>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
+48
@@ -0,0 +1,48 @@
|
||||
System.Runtime.CompilerServices.Unsafe Polyfill for .NET Framework 4.0
|
||||
========
|
||||
|
||||
[](https://www.nuget.org/packages/NetFx.System.Runtime.CompilerServices.Unsafe)
|
||||
[](https://dev.azure.com/NightOwl888/NetFx.Polyfills/_build?definitionId=4&_a=summary)
|
||||
[](https://github.com/NightOwl888/NetFx.Polyfills/blob/main/LICENSE)
|
||||
[](https://github.com/sponsors/NightOwl888)
|
||||
|
||||
Provides the System.Runtime.CompilerServices.Unsafe class, which provides generic, low-level functionality for manipulating pointers.
|
||||
|
||||
Commonly Used Types:
|
||||
- System.Runtime.CompilerServices.Unsafe
|
||||
|
||||
------------
|
||||
|
||||
This package adds support for System.Runtime.CompilerServices.Unsafe on .NET Framework 4.0.
|
||||
|
||||
This is a compilation using the System.Runtime.CompilerServices.Unsafe source code from .NET Core 6.0.28. All tests are passing.
|
||||
|
||||
This is not meant to be an upgrade to System.Runtime.CompilerServices.Unsafe 6.0.0, it is simply to add support on the `net40` target for all of the existing APIs in System.Runtime.CompilerServices.Unsafe 6.0.0. It is recommended to use the official release of System.Runtime.CompilerServices.Unsafe on newer versions of .NET.
|
||||
|
||||
## Interop with System.Runtime.CompilerServices.Unsafe on Targets > net40
|
||||
|
||||
Since the runtime for `net40` hasn't been supported for many years, most likely you will be using a newer runtime with this library. But you may be interoperating with other components that target System.Runtime.CompilerServices.Unsafe, which will cause type collisions by default.
|
||||
|
||||
In this case, it is recommended to remove System.Runtime.CompilerServices.Unsafe from compilation and add NetFx.System.Runtime.CompilerServices.Unsafe in its place. Add the following to your `.csproj` or `.vbproj` file. This example is for using `net452`.
|
||||
|
||||
```xml
|
||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
|
||||
<!-- ExcludeAssets=compile removes the dependency from being referenced.
|
||||
ExcludeAssets=runtime removes the dependency from the build output. -->
|
||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe"
|
||||
Version="6.0.0"
|
||||
ExcludeAssets="compile;runtime" />
|
||||
<PackageReference Include="NetFx.System.Runtime.CompilerServices.Unsafe"
|
||||
Version="4.0.0" />
|
||||
</ItemGroup>
|
||||
```
|
||||
|
||||
> **NOTE:** Only SDK-style projects are supported using this method.
|
||||
|
||||
For transitive dependencies (that is, dependencies that are not directly referenced) that have a `net40` target, consider [forcing a specific target framework](https://duanenewman.net/blog/post/forcing-a-specific-target-platform-with-packagereference/).
|
||||
|
||||
## Saying Thanks
|
||||
|
||||
If you find this library to be useful, please star us [on GitHub](https://github.com/NightOwl888/NetFx.Polyfills) and consider a sponsorship so we can continue bringing you great free tools like this one. It really would make a big difference!
|
||||
|
||||
[](https://github.com/sponsors/NightOwl888)
|
||||
Reference in New Issue
Block a user