查询对象类型和 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:用于查询返回不同类型对象的模式?

快学Scala第14章----模式匹配和样例类

规范模式和 DDD

14、match all 等查询类型,多条件组合查询和利用filter进行查询的优化

SQL模糊查询条件的四种匹配模式

SQL模糊查询条件的四种匹配模式