Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to create email from template #339

Open
OwenPattison opened this issue Aug 30, 2022 · 2 comments
Open

Unable to create email from template #339

OwenPattison opened this issue Aug 30, 2022 · 2 comments

Comments

@OwenPattison
Copy link

Hello, I've been using the v3.0.0 of FluentEmail.Core along with FluentEmail.Liquid with no problems for the past year or so, however, I have upgraded NSwag to the latest version and now we are unable to create emails due to the following error being thrown:

Error. System.TypeLoadException: Could not load type 'Fluid.BaseFluidTemplate`1' from assembly 'Fluid, Version=0.0.0.0, Culture=neutral, PublicKeyToken=omit'. at FluentEmail.Liquid.LiquidRenderer.ParseAsync[T](String template, T model, Boolean isHtml) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at FluentEmail.Liquid.LiquidRenderer.ParseAsync[T](String template, T model, Boolean isHtml) at FluentEmail.Liquid.LiquidRenderer.Parse[T](String template, T model, Boolean isHtml) at FluentEmail.Core.Email.UsingTemplateFromFile[T](String filename, T model, Boolean isHtml)

Looking through release notes for NSwag 13.15.0 it seems they have migrated to use Fluid, I suspect there could be a mismatch of dependencies now between libs. I've been unable to diagnose the issue any further thus far but any help would be appreciated.

@kolemasov
Copy link

Bumped into same problem. In my case I was using Fluid.Core 2.9 package in another part of my application. This caused issues with Liquid Renderer. I assume that there was a breaking change in Fluid.Core and their recent versions are not compatible with the one used by FluentEmail.

@jstafford5380
Copy link

jstafford5380 commented Sep 3, 2024

Ran into the same problem. NJsonSchema uses Fluid 2.9 and it appears this version of FluentEmail.Liquid uses Fluid.Core >= 2.0.13 but BaseFluidTemplate.cs appears to have been deleted by Fluid.Core 2.0. I cannot find a reference to it in the FluentEmail.Liquid library however, despite the error.

This renderer is working fine in another project of mine but I noticed when I installed it, it pulled in Fluid.Core 1.0. Not sure why... but that works. Unfortunately, since other things like NJsonSchema have a dependency on a later version, I seem have to choose on or the other; emails or jsonschemas...

It seems to happen when the control returns to the ParseAsync method here:

var body = await viewTemplate.RenderAsync(context, rendererOptions.TextEncoder);

Which is the first time it tries to do anything with the viewTemplate which was parsed earlier on, here:

if (!_parser.TryParse(content, out var template, out var errors))

Turns out that TryParse is actually an extension method on the Fluid.Core library which calls another extension method Parse here:

https://github.com/sebastienros/fluid/blob/575077f06517f99c95d8ecfcee13b805659673e2/Fluid/FluidParserExtensions.cs#L14

And returns the fluid template where RenderAsync is being called:

https://github.com/sebastienros/fluid/blob/0de3b07a5eeba650d69f19849fa62255fa1b4ca9/Fluid/Parser/FluidTemplate.cs#L20

From here I am lost. I still don't see any reference to BaseFluidTemplate but I would have guessed this FluidTemplate class was previously derived from BaseFluidTemplate and I confirmed that here in their 1.0 tag:

https://github.com/sebastienros/fluid/blob/b4400c4d8361709fdb235bfdfe01b6998327f1d3/Fluid/FluidTemplate.cs#L3

Sooooo.... I don't know what's goin on. Some sort of phantom reference?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants