1

此问题特定于RazorLight

错误:

无法从条目程序集中加载元数据引用。确保 PreserveCompilationContext 在 *.csproj 文件中设置为 true

只有在我们部署到 AWS 后才会弹出此错误。在本地机器上一切正常。 我已经添加 PreserveCompilationContext*.csproj文件中了。

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <PreserveCompilationContext>true</PreserveCompilationContext>
  </PropertyGroup>

我们使用 circleci 进行部署。存在此问题的 API 托管在 AWS Lambda 中。

private async Task<string> GenerateText(string template, ProseModel model)
        {
            var engine = new RazorLightEngineBuilder()
              .UseMemoryCachingProvider()
              .Build();

            try
            {
                // ERROR thrown on next line
                var result = await engine.CompileRenderAsync(Guid.NewGuid().ToString(), template, model);
                return result;
            }
            catch(Exception e)
            {
                Logger.LogError("Error generating template", e);
                throw e;
            }
        }

我发现人们在Azure Functions中遇到了同样的错误。这是否与 Lambda 相似,并且可能需要类似的修复?如果是,我该如何在 Lambda 中解决这个问题?

我也试过设置 SetOperatingAssembly(Assembly. GetExecutingAssembly())

4

1 回答 1

1

我遇到了同样的问题,但你为 Azure Function hack 发布的修复对我有用。您必须确保将“RazorLight”包替换为“RazorLight.Unofficial”包版本 beta1.3。然后它应该工作。

问题是在 Lambda 上运行时的入口程序集被调用:

引导,版本=0.0.0.0,文化=中性,PublicKeyToken=null

我假设没有编译以保留编译上下文。

于 2019-06-13T01:27:25.767 回答