Comments (5)
This has been fixed in dotnet/runtime#80601
It's possible to use the daily build of Microsoft.DotNet.ILCompiler
in .NET 7.0.
Note that this is a daily build so it's possible there are other bugs.
- Create
nuget.config
in your solution (where the .sln-file is located) with the following content:<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" /> </packageSources> </configuration>
- Add the following to your
.csproj
(change win-x64 if you're not using Windows):<PackageReference Include="Microsoft.DotNet.ILCompiler; runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="8.0.0-alpha.1.23067.11" />
After that you can build the project with AOT (e.g. dotnet publish -r win-x64 -c Release -p PublishAot=True
). If you run the application it should give the expected result:
Initial value before serializing: ABC
Final value after deserializing: ABC
Test completed. Press any key to exit
from memorypack.
Thanks.
I suspect it is a bug in the Native AOT compiler, as I reproduced it even with minimized code.
Reported at dotnet/runtime#78882
from memorypack.
This has been fixed in dotnet/runtime#80601
It's possible to use the daily build of
Microsoft.DotNet.ILCompiler
in .NET 7.0. Note that this is a daily build so it's possible there are other bugs.
- Create
nuget.config
in your solution (where the .sln-file is located) with the following content:<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" /> </packageSources> </configuration>
- Add the following to your
.csproj
(change win-x64 if you're not using Windows):<PackageReference Include="Microsoft.DotNet.ILCompiler; runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="8.0.0-alpha.1.23067.11" />
After that you can build the project with AOT (e.g.
dotnet publish -r win-x64 -c Release -p PublishAot=True
). If you run the application it should give the expected result:Initial value before serializing: ABC Final value after deserializing: ABC Test completed. Press any key to exit
The solution worked for me for a custom class serialization/deserialization.
But trying to serialize List, for example, still fails.
System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] is failed in provider at creating formatter.
This happens to every generic I try.
from memorypack.
I'm also experiencing this issue.
Edit: Unmanaged types seem to be serializing and deserializing with Native AOT correctly.
from memorypack.
I received a response.
It seems to be a bug and will not be resolved until .NET 8.
The workaround is to tell the compiler manually that the target needs to be generated. It is not pretty. Pull request dotnet/runtime#78904 adds support for at least telling what needs to be pregenerated and I'm hoping we can service that part in January for 7.0.
It's likely the root cause of the problem will only be fixed in 8.0. Sorry, it's a very risky fix.
I have noted this in the ReadMe.
from memorypack.
Related Issues (20)
- Bug : Generic Struct with Unmanaged Constraint
- MemoryPack.Generator.Roslyn3.dll is seems to be old HOT 1
- MemoryPack does not work in LinqPad HOT 2
- inherit class in another project, the parent class properties will not generate in source generator code! HOT 1
- How to use built primitive type serialization instead of writing wrapper types for every possible value HOT 3
- VersionTolerant serialization of abstract class fails to compile HOT 1
- memorypack is missing NuGet package README file
- MemoryPack not fully compatible with Visual Studio "Find references" HOT 1
- Make ContentType a static const string HOT 1
- .NET 8 class with primary constructors not supported HOT 2
- Support types that aren't known at compile time HOT 2
- Allow snake_case for constructor arguments HOT 5
- Brotli Decompression issue, when not using compressionlevel.fastest HOT 5
- Variable name starting with UnderScore is not recognized correctly in Unity HOT 3
- Model versioning compatibility HOT 1
- Any way of using MemoryPackable collection as generic? HOT 9
- Build Error in the script MemoryPackSerializerOptions.cs in MemoryPack.Core HOT 2
- CS0103 issue when upgrade project from NET6.0 to NET8.0 HOT 3
- Native AOT fully compatibility
- namespace issues with code generator version 1.2x HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from memorypack.