【发布时间】: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