【问题标题】:.Net Standard 2.0 CompilationLibrary.ResolveReferencePaths fails.Net Standard 2.0 CompilationLibrary.ResolveReferencePaths 失败
【发布时间】:2019-03-14 22:34:14
【问题描述】:

TL;DR;有没有办法告诉 CompilationLibrary.ResolveReferencePaths 在哪里寻找参考资料?

我尝试修改当前工作目录,甚至尝试修改当前 AppDomain 基目录,均无济于事。


所以我的团队目前正在使用 RazorLight 处理 .Net Core 2.2 控制台应用程序中的消息模板。

我已将 RazorLight 2.0.0-beta1 添加到 .Net Standard 2.0 库并为其创建了一个接口。但是,我们发现与我们正在使用的不同库存在冲突,因为该库使用 C DLL。为了解决冲突,我们选择使用 C DLL 删除另一个库,因为还没有人使用它的功能。但是,现在我们正处于两者都需要的地步。

幸运的是,RazorLight 允许您指定要用作根的程序集。所以我创建了一个基本的空库项目 (RazorScope),除了 RazorLight 和我们的模型库之外没有其他库。

RazorScope 的 csproj 中的 PreserveCompilationContext 标志为 true。

我在我们的控制台应用程序上有一个预构建事件,用于将 RazorScope 发布到解决方案根/RazorScope 文件夹,然后是一个构建后和发布后事件,将 RazorScope 发布复制到控制台应用程序构建/发布中。由于 PreserveCompilationContext 创建的“refs”文件夹,我选择了这条路线,我想保持干净。如果我只是将 RazorScope 作为项目引用添加到控制台应用程序,它不会拉入 RazorScope 的那些 refs 或 json.deps 文件...

问题在于,当 RazorLight 最终调用 CompilationLibrary.ResolveReferencePaths 时,它会失败 b/c 它拒绝查看 bin/publish 目录中的 RazorScope 文件夹,并希望所有内容都直接位于基本目录中。如果我将 refs 和其他文件向上移动,它可以正常工作,但现在我已经弄脏了我的控制台任务 bin/publish 目录。

有没有办法告诉 CompilationLibrary.ResolveReferencePaths 在哪里寻找参考资料?

【问题讨论】:

    标签: c# razor .net-standard-2.0 .net-core-2.2


    【解决方案1】:

    这个问题的答案就是不使用 RazorLightEngine Nuget 包。无论如何,它并没有真正得到定期维护。

    在使用 .net core razor 库生成 c# 代码后,我最终只是滚动了自己的 Roslyn 编译实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      相关资源
      最近更新 更多