我有一个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版本不足时提供信息性消息?
发布于 2019-07-11 23:09:14
好的,感谢来自@pavelanikhouski的输入,这是可行的:
在我的脚本的顶部,我添加了以下内容:
<Project InitialTargets="MyInitialChecks" ...'InitialTargets‘很神奇(一定是这样的)。“MyInitialChecks”是我选择的棋子目标的名称。
然后我添加一个如下所示的棋盘格目标:
<Target Name="MyInitialChecks" >
<Error Condition="$(MSBuildToolsVersion) < 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
https://stackoverflow.com/questions/56989587
复制相似问题