作者:手机用户2502932023 | 来源:互联网 | 2023-01-28 13:44
有很多关于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依赖项,从而从输出版本中删除可执行文件并在编译时严格编译所有内容?