Is support aot?
Cricle opened this issue · 10 comments
I try
class A
{
public int D1 { get; set; }
public int D2 { get; set; }
public B B { get; set; }
public IList<B> Bs { get; set; }
}
class B
{
public string W1 { get; set; }
}
var f = new FluidParser(new FluidParserOptions { AllowFunctions = true });
var temp=f.Parse("""
These shoes are awesome! {{ D1 }} {{ B.W1 }}
""");
var a = new A { D1 = 123, B = new B { W1 = "456" } };
Console.WriteLine(temp.Render(new TemplateContext(a)));
dotnet run
Result is These shoes are awesome! 123
, but when I try dotnet publish -c Release -r win-x64 -p:PublishAot=true
, result is These shoes are awesome!
Which version?
Fluid currently isn't AOT compatible so as types are dynamically accessed the results will be wrong, like you've noticed.
-p:PublishAot=true
Oops I didn't notice the flag, thanks @lahma, that's why I was asking myself why the title contains AOT :)
Has any plan to support aot compile in the feature?
Or has any method to make it work?
Has any plan to support aot compile in the feature?
I started some work around it, but haven't made progress in a year.
Could you describe your scenario where you need AOT?
I am currently trying to create a program that interacts with GitLab and other websites through webhook. I want to use Microsoft's' cloud native 'approach. Currently, all components used except for Fluid can be AOT enabled, so I am wondering if Fluid also supports AOT.
Thanks
Would probably require use of source generators and non-trivial amount of work.
I would try to write object to FluidValue source generation use roslyn, but it will be defined like json serialization such as ignore, deep...
I think it will drop the reflection in model use.
Please draft a PR to demonstrate your ideas 👍🏻
I will try to do it