查询对象类型和 MSBuild 14 的模式匹配
Posted
技术标签:
【中文标题】查询对象类型和 MSBuild 14 的模式匹配【英文标题】:Pattern Matching for inquire object type and MSBuild 14 【发布时间】:2021-01-31 10:44:18 【问题描述】:我正在使用 VS2019 在我的开发环境中迁移框架 4.5 上的应用程序的代码。
我们为 CI/CD 使用 TFS,该服务器使用 MSBuild14 来编译应用程序(我不知道是否安装了开发人员包和版本)
所以当我在我的版本表达式中使用时(模式匹配,在 C# 7.0 之后我喜欢):
if (ex is HttpException httEx && httEx.ErrorCode == 404)
return;
编译失败,在不同的代码行中通知副作用错误,如“)预期”。
所以,我猜这个问题是因为我使用了不同的编译方法,比如用于 VS2019 的 MSBuild 工具,并且可能不同的开发人员在编译器服务器上打包。
那么,我如何复制编译环境,因为它比公司安装简单得多?我可以链接 MSBuild 14 本地版本并使用特定框架进行编译吗?在 VS2019 中
或者,如何要求更新服务器环境才能使用这些类型的 sintaxis?,必须更新 MSBuild?安装框架 7+ 的开发人员包?所有这些?
【问题讨论】:
【参考方案1】:我们为 CI/CD 使用 TFS,该服务器使用的是 MSBuild14
要支持 C# 7 功能,我们需要使用 Msbuild15.0 或更高版本。 (VS2015 MSBuild14.0,VS2017 MSBuild15.0,VS2019 MSBuild16.0)
您可以在 TFS 服务器上下载并安装 Visual Studio 2019 或 Build Tools for Visual Studio 2019(向下滚动到“Visual Studio 2019 工具”并选择“Visual Studio 2019 构建工具”)。
其次,更新 TFS 服务器上的自托管代理。
最后,如果有新版本的 MSbuild,请检查您的代理能力。
【讨论】:
【参考方案2】:我如何复制编译环境,因为比公司安装简单得多?我可以链接 MSBuild 14 本地版本并使用特定框架进行编译吗?在 VS2019 中
或者,如何要求服务器环境更新才能使用 那些类型的sintaxis?,必须更新MSBuild?安装开发者包 框架 7+ ?所有这些?
恐怕您必须更新 MSBuild 并安装框架 7+ 的开发人员包。
我可以理解这可能是痛苦和麻烦的,但在软件开发过程中是不可避免的。众所周知,软件产品基本上是向后兼容,但不能向上兼容。开发人员和决策者更愿意在新版本上更新和发布新功能,而不是在旧版本中添加这些新功能。
所以我们可以在新编译器中编译旧代码(那些不推荐使用的功能除外),但我们不能让旧编译器编译在更高版本上开发的代码。因为新方法没有集成到旧版本的编译器中,这就是你得到错误的原因。
同样,对于您的问题,我认为在服务器环境中使用 MSBuild 14.0
编译 C#7
是不可能的(15.0
及更高版本支持)。当然,如果你不想安装完整的 Visual Studio,你可以使用 Visual Studio 构建工具来代替完整的 Visual Studio。
【讨论】:
我的错误解释是,我的意思是,一种选择是强制限制我的本地环境编译,以便在我使用一些会出现错误的 sintaxis 时复制编译服务器上早期检测到的可能错误在编译中...我该怎么做? @rolivaresr,恐怕没有这种方法可以尽早发现错误,直到我们在旧编译器上调用那些新函数。以上是关于查询对象类型和 MSBuild 14 的模式匹配的主要内容,如果未能解决你的问题,请参考以下文章
Apollo GraphQL:用于查询返回不同类型对象的模式?