通过msbuild添加并运行自定义目标



我目前正在努力完成一项看似非常基本的任务,即向csproj文件添加一个新的自定义目标,并使用msbuild从命令行运行它。

我在网上做了广泛的研究,但我没有发现真正有效的解决方案。

假设我将以下目标添加到我的csproj文件中:

<Target Name="TeamCity">
<Message Text="I am Running!"/>
</Target>

甚至是依赖于构建的东西:

<Target Name="TeamCity" DependsOnTargets="Build">
<Message Text="I am Running!"/>
</Target>

这就是msbuild文档所建议的。

但是,瞄准目标似乎是一项不可能完成的任务。当我能够在csproj:上运行预定义的目标时

msbuild MySolution.sln /t:MyProject:Rebuild /p:Configuration="Release" /p:Platform="Any CPU"

我无法运行我刚刚添加的目标-即TeamCity目标:

msbuild MySolution.sln /t:MyProject:TeamCity /p:Configuration="Release" /p:Platform="Any CPU"

我总是收到错误MSB4057:项目中不存在目标"TeamCity"。

这次跑步的秘密是什么?

PS。请注意,我需要的任务是在项目级别上工作,而不是在解决方案上。我需要运行msbuild MySolution.sln…不要有那么多人错误地建议msbuild MyProject.csproj…

秘诀很简单——你无法运行它。

因为,msbuild生成中间项目文件(YourSolution.sln.metproj),但不会从YourProject.csproj导入,包括.targets文件。这就是YourCustomTarget未被识别的原因。

您可以尝试使用Before/After Targets将目标注入预定义的构建流中。

希望它能有所帮助。

最新更新