ASP.Net 网站项目、预编译版本和 roslyn 编译器

用户1664043

希望有人能阐明我在这里出错的地方。

我们有许多使用 VS 2015 构建的共享程序集,它们已经在使用某些 C# 6 语言功能(字符串插值、空条件运算符等)。我们不需要向这些项目添加 Roslyn Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider nuget 引用;Visual Studio/msbuild 刚刚为我们处理了这个问题。

最近我在做一个 ASP.Net 网站项目,我们提供预编译并使用 msbuild 构建。我必须更新该解决方案上的目标框架,以便我们可以使用这些共享程序集 - 但我仍然无法在背后的代码中使用 C# 6 语言功能。

我发现有关编译器如何不再是主要 .net 的一部分,并且不再在 gac 中的帖子,并且要将它们与 asp.net 网站解决方案和代码隐藏一起使用,您必须 a) 将 web.config 更改为引用较新的编译器,并且 b) 将这些编译器的 nuget 引用添加到解决方案中。

我的推理是这样的:其他共享程序集不必添加 Roslyn 编译器作为 nuget 包来使用这些功能,而且我们正在为构建产品预编译整个解决方案并且没有提供任何编译- 将代码隐藏起来,所以我们不希望/不需要 Roslyn 编译器程序集出现在构建产品中(我们不必为其他 WebApi 和其他应用程序构建;msbuild/VS 2015 只是处理了这一点 - 除了字符串插值和空条件运算符是语法糖,似乎没有额外的运行时要求)。

所以我尝试只更新 web.config 部分以引用 Roslyn 编译器。在我的开发机器上,我在 VS 中点击了 Build,它运行良好。我在本地系统上运行 msbuild 并且运行良好。

但这只是因为 Visual Studio 隐式添加了 Roslyn 编译器作为 nuget 引用。它们显示在包目录和输出 bin 目录中。

在构建服务器上,只是运行 msbuild,它失败了,因为 Roslyn 编译器没有被提取并放入包文件夹中。

有没有办法让预编译的网站解决方案使用 C# 6.0 语言糖而不像其他共享程序集那样将 Roslyn 作为 nuget 包引入?

谢谢

用户1664043

事实证明,似乎没有任何优雅的方法可以实现这一目标。Nuget 在网站解决方案方面也特别不稳定,所以朝着这个方向前进的唯一方法是向 makefile 添加一大堆变通方法。

我选择将 App_Code 下的几乎所有内容移动到一个单独的程序集中并免费获取编译。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET 5 Roslyn动态编译

是否可以使用.NET Core Roslyn编译器编译单个C#代码文件?

`.NET Compiler Platform SDK` & `C# 和 Visual Basic Roslyn 编译器` 之间的区别

Roslyn是完整的编译器吗?

iTextSharp xmlworkerhelper的ASP.NET编译器错误

使用.Net编译器Roslyn为C#代码创建控制流程图

您可以从常规 .net 应用程序中使用 Roslyn 编译器吗?

升级现有项目以使用Roslyn编译器

尝试使用简单的 ASP.NET Core 网站 RenderPartialAsync 时出现编译器错误

ASP.NET Web窗体ASP按钮OnClick编译器错误(CS1061)

Roslyn是Visual Studio 2017的默认编译器吗

在Visual Studio 2013中使用Roslyn编译器

Roslyn编译器以零优化函数调用乘法

Roslyn C#编译器如何启动?

.net Framework 4.8中是否包含C#7.3编译器,用于asp.net?

ASP.NET编译器找不到任何名称空间

ASP.NET 间歇性地获取编译器错误消息

ASP.NET MVC Html.CheckBoxListFor 丢失/编译器错误

带有表单提交的asp.net页面上的编译器错误

IIS 10.0上的旧asp.net应用无法识别的元素“编译器”

更新到版本5.2.2后,ASP.NET编译器无法加载System.Web.Mvc

编译错误-编译器失败,错误代码为1-发布后出现asp.net错误

VSO ASP.NET5 CI构建期间发生错误-“您的项目使用了不同版本的TypeScript编译器”,但我没有使用TypeScript

如何在Visual Studio 2015 RC中为ASP.NET 5 MVC 6项目设置TypeScript编译器版本?

Roslyn编译器服务器报告的哈希版本与生成任务不同

JIT .Net编译器错误?

.NET,Java到JavaScript编译器

.NET编译器找不到引用

编译器错误CS0433-GAC和ASP.NET临时文件中都存在该类型