如何使用msbuild首先构建依赖项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用msbuild首先构建依赖项目相关的知识,希望对你有一定的参考价值。
我刚开始研究msbuild,因为我想制作自己的构建脚本。现在我能够创建只编译一个项目的构建脚本,但是如何处理依赖项呢?
例如,如果我有两个使用这两个msbuild脚本构建的项目怎么办?
- projectA.xml
- projectB.xml
我怎么告诉msbuild我在执行projectB.xml时应该首先执行projectA.xml?
我已经在谷歌搜索了很多,但它似乎没有任何像我这样的初学者理解的东西。我会对描述这篇文章的链接感到高兴,或者只是一个小代码示例。
我想要这个控件的原因是因为我正在构建一个库。该图书馆由几个项目组成。开发人员应该能够提取库的源代码并仅构建他想要的库。
实际上我希望能够从不同的项目中构建.net模块。这就是为什么我希望能够运行自定义的msbuild脚本。
我设置了我的构建脚本,以便我有一些不做任何事情的常见目标,但是使用DependsOnTargets设置项目依赖项并运行构建。
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- ************************************************************************************************ -->
<!-- Targets that run the builds -->
<!-- ************************************************************************************************ -->
<Target Name="AutoBuild" DependsOnTargets="BuildProject1;BuildProject2;BuildInstallers">
<OnError ExecuteTargets="NotifyFailure" />
</Target>
<Target Name="FullCompile" DependsOnTargets="BuildProject1;BuildProject2">
<OnError ExecuteTargets="NotifyFailure" />
</Target>
<!-- Build Project 1 -->
<Target Name="BuildProject1">
<!-- Use MSBuild task and point it to build project1.csproj, project1.sln or whatever your projects is -->
</Target>
<!-- Build Project 2 -->
<Target Name="BuildProject2">
<!-- Use MSBuild task and point it to build project2.csproj, project2.sln or whatever your projects is -->
</Target>
<Target Name="BuildInstallers">
<!-- Whatever logic you have for building installers -->
</Target>
</Project>
如果您使用这两个项目创建解决方案,您可以使用msbuild定位.sln
文件,而不是直接构建项目,它应该处理项目依赖项:)
但是如果你使用的是标准的.csproj项目......
好的,我看了一个我正在研究的项目,它是这样的:
<ItemGroup>
<ProjectReference Include="..SomeFolderSomeProject.csproj">
<Project>{1A94B405-2D01-4A09-90D5-A5B31180A03B}</Project>
<Name>SomeProjectNamespace</Name>
</ProjectReference>
</ItemGroup>
这是关于参考文献的MSDN page。向下滚动,直到找到ProjectReference ...
你不需要使用sln构建。如果在csproj中使用项目引用,则依赖顺序由MSBuild处理。试试吧。 Automajically。您不需要在msbuild脚本中对依赖顺序进行排序。
在MSBuild issue #2887,讨论了类似的情况。该线程还揭示了官方ProjectReference
Protocol的链接。
以上是关于如何使用msbuild首先构建依赖项目的主要内容,如果未能解决你的问题,请参考以下文章
MSBuild:是不是可以在实际项目文件中指定项目构建依赖项?
如何添加停止 msbuild 构建项目 Visual Studio 构建选项
MSBuild 在 _CopyOutOfDateSourceItemsToOutputDirectory 期间复制依赖项目文件