dotnet / corert

This repo contains CoreRT, an experimental .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying compiler toolchain.
http://dot.net
MIT License
2.91k stars 510 forks source link

Generating native code with Grpc.Core #8360

Open DenMpei opened 3 years ago

DenMpei commented 3 years ago

Good day!

I hit the following issue: dotnet publish -r win-x64 leads to numerous compilation errors

image

Inside the package is used Grpc.Core 2.28.1

image

Сompile with Microsoft.DotNet.ILCompiler 1.0.0-alpha-29408-02

Adding code from this issue doesn't help

I ask to give advice to solve the problem. Regards.

MichalStrehovsky commented 3 years ago

Adding code from this issue doesn't help

The attribute got renamed to UnmanagedCallersOnly. Try this definition:

https://github.com/dotnet/corert/blob/4ce1c21ac0d4d1a3b7f7a548214966f69ac9f199/samples/NativeLibrary/UnmanagedCallersOnly.cs#L6-L12

DenMpei commented 3 years ago

Didn't work :( I will try to provide a minimal version of the project. But it won't be soon, because reference on Grpc.Core is very deep in real project. :(

MichalStrehovsky commented 3 years ago

Didn't work :( I will try to provide a minimal version of the project. But it won't be soon, because reference on Grpc.Core is very deep in real project. :(

Make sure you put the UnmanagedCallersOnlyAttribute-annotated method in the entrypoint assembly (whatever assembly is the main executable). The compiler doesn't look elsewhere.