繁体   English   中英

旧的ASP.NET 4应用程序的生成服务器无法生成新的C#7,但是在开发中可以正常工作

[英]Build server of an old ASP.NET 4 application fails building new C# 7, but it works in development

我最近开始研究基于.NET Framework 4.0的旧式ASP.NET代码库。 我们设法将所有内容从Visual Studio 2012传递到VS 2017 ,并使用新版本的Jenkins更新了构建服务器,并安装了.NET Framework4.7.x。

在本地,我们可以编写最新版本(7.3)的C#代码,并且构建可以正常工作(如果我没记错的话,VS不使用MSBuild),但是当我们在构建服务器上进行部署时,构建会失败,因为MSBuild无法识别比C#更新的构造4.0 为了避免错误,我将lang版本固定为4.0(项目的高级构建属性),因此,如果我编写的C#太新了,VS就会在dev中阻止我,但我们想开始使用新的C#。

我们还尝试直接在项目中( <LangVersion>7.3</LangVersion>内PropertyGroup中的<LangVersion>7.3</LangVersion>中直接修复C#7.3,并将Project元素(csproj)的but ToolsVersion属性修复为14.0,但随后构建MSBuild失败,并显示以下错误:

CS1617:/ langversion的选项“ 6”无效; 必须为ISO-1,ISO-2、3、4、5或默认值

在这里说明了我想做的事情是可能的: https : //www.dotnetcurry.com/dotnet/1427/build-apps-different-dotnet-framework-versions

无论我们在项目中定位的是哪个.NET Framework版本,使用的C#语言版本都不会更改。 很好,因为在更高版本的语言中引入的绝大多数语言功能均不依赖CLR或特定的API。 它们只是语法糖,并且编译器生成的字节码仍将在.NET Framework 2.0中运行。

任何人都知道我们在犯什么错误?

问题是在构建服务器上未正确安装MSBuild,并且构建脚本使用了旧的脚本。 安装Visual Studio 2017构建工具并修复我们解决的脚本上的路径。

在遇到“找不到“ GetReferenceNearestTargetFrameworkTask”任务”问题后,我们按以下说明进行了解决: 找不到“ GetReferenceNearestTargetFrameworkTask”任务 (正确的答案取决于您使用哪种策略安装VS Buld工具)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM