我目前有多个使用msbuild构建的项目。我对由.targets文件处理的内部版本进行了小的自定义。一种解决方案是添加代码段
<Import Project="MyTargets.targets"/>
到每个项目文件。但是,理想情况下,我不希望触摸项目文件,而是能够将此信息作为参数传递给msbuild。这样一来,我可以轻松地控制是否从命令行运行此自定义项,而不必触摸现有的项目文件。
这可能吗?
您可以使用MSBuild 4.0轻松做到这一点(通过顶级属性ToolsVersion =“ 4.0”来检查版本):
在加载Common.targets和/或CSharp.targets之前和之后,可以使用多个属性来导入目标。
最简单的方法是使用2套自我解释属性。第一组是:$(CustomBeforeMicrosoftCommonTargets)$(CustomAfterMicrosoftCommonTargets)
第二个:
$(CustomBeforeMicrosoftCSharpTargets)
$(CustomAfterMicrosoftCSharpTargets)
属性名称很容易解释。
只需通过msbuild.exe将完整文件名传递给任何此属性,例如
msbuild.exe /p:CustomBeforeMicrosoftCSharpTargets=c:\mytargets\custom.targets
如果需要导入多个文件,则可以使用其他“ ImportByWildcard(Before | After)...”属性。但是在这种情况下,您需要将更多参数传递给命令行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句