.Net Standard 2.0 CompilationLibrary.ResolveReferencePaths失败

问题描述 投票:0回答:1

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引入那些引用或json.deps文件...

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

无论如何要告诉CompilationLibrary.ResolveReferencePaths在哪里寻找引用?

c# razor .net-standard-2.0 .net-core-2.2
1个回答
0
投票

答案就是不使用RazorLightEngine Nuget包。无论如何,它并没有真正定期维护。

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

© www.soinside.com 2019 - 2024. All rights reserved.