Mvc: 嵌入在类库中的视图会引发 Azure 上缺少的编译库异常

创建于 2017-03-24  ·  3评论  ·  资料来源: aspnet/Mvc

标题

加载 Azure 上类库中嵌入的视图会导致System.*Microsoft.*命名空间中缺少编译库包的异常。

功能影响

例外。

最少的重现步骤

我创建了一个裸仓库来重现问题。 我通过 VS 创建了一个应用程序和库,并尽最大可能将嵌入的视图放入库中并在主页上显示它的部分内容。 如果在 VS 中克隆并运行它应该可以正常工作,但如果部署到 Azure 则失败。

https://github.com/svallis/ClassViews

预期结果

部分渲染正确。

实际结果

部署到 azure 测试 repo 在主页上抛出以下异常:

InvalidOperationException: Can not find compilation library location for package 'microsoft.codeanalysis.common'
Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths()

导航到没有嵌入部分的/Home/About页面可以正常工作。

在我的完整项目中,我收到了相同的错误,但使用了不同的包:

Can not find compilation library location for package 'system.data.sqlclient'

最有用的评论

MvcRazorCompileOnPublish禁止发布用于运行时编译的refs程序集。 这个想法是因为你的应用程序有预编译的视图,你不需要运行时编译的 refs。 但是,您的嵌入式视图需要这些。 有两种方法可以解决这个问题

所有3条评论

有没有人能够对此提供任何见解? 我认为这里比通过 Azure 支持更有可能找到答案,但很乐意接受任何建议。 部署到 MS 提供的 docker 容器的相同代码可以完美运行,就像在开发中一样,所以它似乎与 Azure 的配置方式有关。

/cc @pranavkm

MvcRazorCompileOnPublish禁止发布用于运行时编译的refs程序集。 这个想法是因为你的应用程序有预编译的视图,你不需要运行时编译的 refs。 但是,您的嵌入式视图需要这些。 有两种方法可以解决这个问题

这是完全有道理的@pranavkm - 非常感谢您的解释。 我现在已经同意你以前的建议,我将推迟预编译类库中的视图,直到它更加精简(我认为最终它应该像在应用程序上启用一样容易,只是在 csproj 中翻转一个布尔值?)

此页面是否有帮助?
0 / 5 - 0 等级