C# Mono编译器作为服务在运行时重新编译ASP.NET MVC站点?
我发现了一个关于使用Mono编译器作为服务在运行时动态编译控制器类的有趣链接:C# Mono编译器作为服务在运行时重新编译ASP.NET MVC站点?,c#,asp.net,asp.net-mvc,mono,C#,Asp.net,Asp.net Mvc,Mono,我发现了一个关于使用Mono编译器作为服务在运行时动态编译控制器类的有趣链接: 但它只适用于控制器。有没有人能解释一下是否有可能在运行时对整个项目进行评估?虽然这意味着更少的编译时错误检查,但它仍然可以极大地提高生产率。可以动态编译放入App_Code文件夹的所有内容,包括控制器,如果您将项目转换为网站项目类型而不需要编译器作为服务,则可以使用自定义HTML和Url帮助程序等 缺点是不能使用业务逻辑或数据库访问库动态编译引用库。还有一个明显的性能缺陷,可以通过IIS应用程序预热模块部分消除 有人
但它只适用于控制器。有没有人能解释一下是否有可能在运行时对整个项目进行评估?虽然这意味着更少的编译时错误检查,但它仍然可以极大地提高生产率。可以动态编译放入App_Code文件夹的所有内容,包括控制器,如果您将项目转换为网站项目类型而不需要编译器作为服务,则可以使用自定义HTML和Url帮助程序等 缺点是不能使用业务逻辑或数据库访问库动态编译引用库。还有一个明显的性能缺陷,可以通过IIS应用程序预热模块部分消除
有人认为在生产服务器上部署所有源代码存在安全问题,但Ruby on rails、python web framworks、php、node.js等脚本世界似乎并不太担心这个问题,而且,只要您不混淆dll,您的智能属性的安全性就没有多大差别。为什么这会提高生产率?听起来你是在毫无回报地发挥预编译语言的所有优势。我经常从事大型项目——在更改类中的一行之后重新编译整个内容似乎是浪费。每当我使用像Python这样的语言时,我都喜欢能够或多或少地立即重新加载。我认为您并没有失去任何优势——大概在我想象中的世界中,在这个世界中,您可以点击构建并仍然得到编译时检查。但有时也只是快速更换和加载。ASP.NET网站过去可以这样做。因此,第一个访问您网站的人将不得不等待它编译,而不是等待它编译?不,不。。。我不是建议在生产环境中使用它。只是为了开发,它会像旧的ASP.NET代码文件模型一样工作-只是在加载时重新编译.cs文件,而不是整个项目。@Alastair,我正在使用mono动态编译我的控制器,现在我将其更改为使用Roslyn,原因与您公开的相同,我的项目很大,一次又一次地编译需要很长时间。但是,让我和你分享我的经验,这样做的利润是不够的,我的意思是,你赢得了一些时间来更改控制器代码并按F5,但是,当你有任何问题时,你必须调试,并且要这样做,你必须编译并设置一个断点,然后开始常见的舞蹈F10,F10,快速观察,运行到光标,我希望我的经验对你有用,相信我这不值得。