.Net Standard 2.0 CompilationLibrary.ResolveReferencePaths 失败

.Net Standard 2.0 CompilationLibrary.ResolveReferencePaths fails

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 发布到解决方案 root/RazorScope 文件夹,然后是一个 post-build 和 post-publish 事件,用于复制RazorScope 发布到控制台应用 build/publish。由于 PreserveCompilationContext 创建的 "refs" 文件夹,我选择走这条路,我想保持干净。如果我只是将 RazorScope 作为项目引用添加到控制台应用程序,它不会拉入那些引用或 RazorScope 的 json.deps 文件...

问题是,当 RazorLight 最终调用 CompilationLibrary.ResolveReferencePaths 时,它失败了 b/c 它拒绝查看 bin/publish 目录中的 RazorScope 文件夹,并希望一切都直接在基本目录。如果我将 refs 和其他文件移动到基​​础,它工作正常,但现在我弄脏了我的控制台任务 bin/publish 目录。

有没有什么可以告诉 CompilationLibrary.ResolveReferencePaths 在哪里可以找到参考资料?

答案就是不使用 RazorLightEngine Nuget 包。反正也不是真的定期维护。

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