如何在 vNext 中将所有 cshtml 文件编译成 DLL 或 .net 程序集?

Posted

技术标签:

【中文标题】如何在 vNext 中将所有 cshtml 文件编译成 DLL 或 .net 程序集?【英文标题】:How to compile all cshtml files into an DLL or .net assembly in vNext? 【发布时间】:2016-06-13 20:33:45 【问题描述】:

我正在使用带有 MVC 的 ASP.NET 5 (vNext),是否有任何解决方案可以将所有视图发布到单独的 dll 中?

【问题讨论】:

通常不需要这样做,因为定制它会变得很痛苦(如果您将它作为某些 CMS 的第三方库的一部分发布)。我可以问你为什么需要它吗?如果您唯一关心的是性能,您可以启用 razor view 编译,如本文***.com/questions/33518206/… 中所述。 安全是我关心的问题,如果我有一个 dll,我可以混淆它。我知道我会失去性能,但需要安全。 奇怪的要求。你在你的观点中加入了什么样的东西,你有安全问题? View 应该只显示你已经准备好的数据,而不是只包含 html。试图混淆它们听起来过于偏执。恕我直言,视图应该是公开的,因此可以在使用它们的应用程序中自定义第 3 方库的视图。如果它不是公共消费的插件/扩展/包,那么也没有真正需要混淆它 如果您担心对非视图相关代码的调用是可见的,那么请使用视图模型。不要混淆视图模型,而是混淆你的领域层(模型、服务、存储库)。视图不会受到它的影响,因为它消耗的是视图模型而不是模型 你是对的,但是视图正在使用依赖注入来访问来自存储库的某些服务,这可能是安全性的弱点,我想阻止服务器管理员注入从观点来看任何代码。 【参考方案1】:

以下站点包含在 MVC 3 中编译 Razor 视图的说明。我不确定该技术是否适用于 vNext。

这是创建跨网站共享视图元素的有用机制。

http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/

这也可能有帮助: Sharing Razor views across projects

这个 gitHub 项目是前面的终极版本: https://github.com/RazorGenerator/RazorGenerator

【讨论】:

以上是关于如何在 vNext 中将所有 cshtml 文件编译成 DLL 或 .net 程序集?的主要内容,如果未能解决你的问题,请参考以下文章

create-react-app 如何在构建过程中将特定的 .ts 文件编译为 .js 文件?

如何在 yii2 中将应用资产编译为模块资产?

如何在不启动模拟器的情况下在 Eclipse 中将 Android 项目编译为 .apk 文件?

如何在 Visual Studio 2010 Express 中将 cpp 编译为 dll

如何在浏览器中将 C++ 编译为 JavaScript?

Asp.net vNext 早期测试版发布到 Windows 服务器中的 IIS