c# - 在我们的.net项目中更改MSBuild工具集(ToolsVersion)有什么缺点?

标签 c# compiler-errors msbuild visual-studio-2019 devtoolset

我知道 MSBuild工具集(ToolsVersion)是什么以及如何工作,但不了解如果更改/使用项目文件或CLI中较低或较高的ToolVersion对我们的项目有什么影响。

Need to know the pro and cons Please...

最佳答案

what are the drawbacks of changing the MSBuild Toolset (ToolsVersion) in our .net projects?



据我所知,ToolsVersion指定了特定版本的生成机制,实际上,这意味着使用不同版本的MSBuild构建项目。参见this link

,例如:

VS2019(MSBuild 16.0):ToolsVersion=Current,VS2017(MSBuild 15.0):ToolsVersion=15.0,VS2015(MSBuild 14.0):ToolsVersion=14.0,VS2013:ToolsVersion=12.0

但是,每个新版本的MSBuild都会具有一些新功能和一些特殊任务,您可以在proj文件中使用它们。因此, MSBuild支持向下兼容性,而更高版本的MSBuild支持编译使用较低版本VS创建的项目以及以前较低版本的新功能。

例如,如果您在VS2015中创建一个新项目,则可以使用ToolsVersion 14.015.0Current而不会出现任何错误。

如果您使用较低的ToolsVersion来构建您的项目,它将变成一些错误,例如Could not find the assembly reference xxxxxxx或缺少DLL方法。

因此,,我们建议您使用高于当前项目版本的ToolsVersion(MSBuild),而不要使用低于当前项目版本的MSBuild。并且,如果您当前的项目没有任何特殊版本的方法或功能,并且使用较低版本也没有问题,但是通常不建议这样做。并使用最新版本的MSBuild来构建您的项目,它可能会对性能进行优化和改进。

希望它能对您有所帮助。

关于c# - 在我们的.net项目中更改MSBuild工具集(ToolsVersion)有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61276603/

相关文章:

c# - 在数据绑定(bind)表达式中调用具有 void 返回类型的方法

javascript - 类型 '{}' 缺少类型 ts(2739) 的以下属性

msbuild - 如何在MSBuild中包括排除的文件类型

c# - 如何使用 MS EWS Managed API 检索全局联系人?

c# - 骰子问题(满屋和直子识别)

c - 下面的变量声明会导致词法错误还是语法错误?

c++ - map<int, int>::iterator 的编译错误,与 operator = 不匹配

c# - 生成应用程序 list 任务的配置文件参数值无效

msbuild - 如何让 MSBuild 安静输出但带有错误/警告摘要

c# - List<T> 是常量、表达式参数还是表达式树中的其他内容?