首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果MSBuild工具太早,如何让MSBuild .proj失败

如果MSBuild工具太早,如何让MSBuild .proj失败
EN

Stack Overflow用户
提问于 2019-07-11 20:47:12
回答 1查看 58关注 0票数 0

我有一个MSBuild .proj文件,由不同的人以通常的方式在不同的机器上执行,比如它编译的C#项目包括.Net 4.5功能,所以如果你用不知道后来的MSBuild的早期.Nets编译它,你会得到"Invalid token '=‘in class,struct,or interface member声明“之类的消息,这些消息在其他地方都有很好的文档记录。(例如Invalid Token Errors when using MSBuild via Command Line but not on Visual Studio )

直接的解决方法是将您的MSBuild更新到最新版本,并确保您使用的是您认为的MSBuild版本。但是,如果不是得到一个深奥的“无效令牌...”,那将是对用户的一种善意。消息(有点"go figure..."),而不是类似于"MSBuild v16或更高版本的要求(你的版本是v4.7)“或类似的东西。

因此,我正在寻找一个MinimumMSBuildVersionRequired参数或类似的参数,将其放在msbuild thingummy.proj文件的顶部,以便在构建过程开始时,MSBuild会测试运行此脚本的MSBuild是否足够新。我已经找遍了,但找不到合适的人选。

是否有这样的参数可以在我的.proj MSBuild脚本中设置?或者其他一些解决方法,在运行MSBuild版本不足时提供信息性消息?

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 23:09:14

好的,感谢来自@pavelanikhouski的输入,这是可行的:

在我的脚本的顶部,我添加了以下内容:

代码语言:javascript
复制
<Project InitialTargets="MyInitialChecks" ...

'InitialTargets‘很神奇(一定是这样的)。“MyInitialChecks”是我选择的棋子目标的名称。

然后我添加一个如下所示的棋盘格目标:

代码语言:javascript
复制
<Target Name="MyInitialChecks" >
    <Error Condition="$(MSBuildToolsVersion) &lt; 15.0" 
        Text="The version of MSBuild being used for this build (v$(MSBuildToolsVersion)) is too early. v15.0 or later is required." />
</Target>

这包括Visual Studio2017和MSBuildToolsVersion v15.0。

正如帕维尔所指出的那样,当涉及到VS2019时,所有的赌注都会消失,因为它不再报告MSBuildToolsVersion。请参阅https://developercommunity.visualstudio.com/content/problem/404485/vs2019-msbuildtoolsversion-is-not-a-version.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56989587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档