Cod*_*ggo 11 asp.net roslyn opserver c#-6.0 visual-studio-2015
有很多关于StackOverflow上的C#编译器Roslyn和一般的互联网的讨论.很多人问罗斯林的原因和原因,而其他人则问如何摆脱它.
我的问题与后一个问题有关.正如Kemal Kefeli从这里引用的那样,但经常多次逐字迭代(例如迭代的另一个例子),以便删除Roslyn:
创建新的Web项目时,会自动将两个NuGet包添加到项目中.如果你删除它们,你的问题应该解决.包名称为:" Microsoft.CodeDom.Providers.DotNetCompilerPlatform "和" Microsoft.Net.Compilers ".
但是,如果您使用Roslyn提供的C#6功能,则此方法不起作用.通过删除这两个块包,您放弃了使用这些功能的任何机会.
我的问题是,你如何编译一切与罗斯林,但避免任何编译器在运行时发生的行为,最重要的是csc.exe,vbc.exe和VBCSCompiler.exe被放置在最终发布版本(在罗斯林文件夹).
我正在将StackOverflow的 Opserver移植到一个软件中.该软件允许用户从其中托管嵌入式Web服务器和网页.不过,该软件是什么,它允许被上传和可执行文件,就像那些在罗斯林文件夹中找到非常挑剔,都不会允许被上传,并在运行时执行,由于安全方面的原因.
Opserver依赖于C#6功能,因为如果删除这两个 NuGet包,则会在编译生成的文件中出错.但是,如果我更简单地恢复使用 C#5.0编译器严格编译,那么我们清楚地看到了这一点:
如果我离开的NuGet包存在,并且取消allow precompiled site to be updatable发布时,为了与编译后在运行时的文件,以禁止罗斯林为随后Rutix从"的评论在这里:
请记住,删除这些软件包[由Kemal Kefeli讲述]将打破C#6功能的使用.这可以通过取消选中"允许预编译的站点可更新"来解决,该预先编译视图等.
它仍然在Roslyn文件夹中生成可执行文件和相关的DLL,但是DLL却少得多.我怎样才能在运行时删除Roslyn依赖项,从而从输出版本中删除可执行文件并在编译时严格编译所有内容?
在完全预编译的 ASP.NET 项目中(禁用“允许预编译站点可更新”),恕我直言,无需使用应用程序部署编译器。
我在我的 .NET 4.6 ASP.NET 应用程序(Web 表单和 MVC 的混合)中使用 Roslyn,并且从发布的站点中删除 Roslyn 文件夹\文件后,预编译的应用程序工作得很好...
更新:过了一段时间,发现部署包中缺少 Roslyn 的唯一地方是在浏览器中访问 ASMX(旧式 ASP.NET SOAP Web 服务)的问题 - ASMX 的“帮助”页面显然是在运行时构建的,即使是完全构建的预编译的 ASP.NET 应用程序并抛出异常(尽管 WS 本身运行正常)
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |