C# 如何首先使用msbuild生成依赖项目
我刚刚开始研究msbuild,因为我想创建自己的构建脚本。现在,我可以创建只编译一个项目的构建脚本,但是如何处理依赖关系呢 例如,如果我有两个项目使用这两个msbuild脚本生成,该怎么办C# 如何首先使用msbuild生成依赖项目,c#,.net-4.0,msbuild,C#,.net 4.0,Msbuild,我刚刚开始研究msbuild,因为我想创建自己的构建脚本。现在,我可以创建只编译一个项目的构建脚本,但是如何处理依赖关系呢 例如,如果我有两个项目使用这两个msbuild脚本生成,该怎么办 projectA.xml projectB.xml 我如何告诉msbuild,当我执行projectB.xml时,它应该首先执行projectA.xml 我在谷歌上搜索了很多,但它似乎没有得到像我这样的首发球员所理解的任何东西。如果有一个描述这一点的文章链接,或者仅仅是一个小的代码示例,我会非常高兴 我之所以
实际上,我希望能够从不同的项目中构建.net模块。这就是我希望能够运行自定义msbuild脚本的原因。如果使用这两个项目创建解决方案,则可以使用msbuild将
.sln
文件作为目标,而不是直接生成项目,它应该处理项目依赖关系:)
但如果您使用的是standard.csproj项目
好的,我看了一个我正在做的项目,它是这样的:
<ItemGroup>
<ProjectReference Include="..\SomeFolder\SomeProject.csproj">
<Project>{1A94B405-2D01-4A09-90D5-A5B31180A03B}</Project>
<Name>SomeProjectNamespace</Name>
</ProjectReference>
</ItemGroup>
{1A94B405-2D01-4A09-90D5-A5B31180A03B}
SomeProjectNamespace
这里有一个关于参考文献的例子。向下滚动,直到找到ProjectReference…您不需要使用sln构建。如果在csproj中使用项目引用,那么依赖关系顺序由MSBuild处理。 试试看。自动地。
您不需要在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>
将讨论类似情况下的情况。该线程还显示了到官方的链接。关于我的回答,也许你可以创建两个项目,其中一个项目依赖于另一个项目,看看.sln和.csproj文件是什么样子,也许这会告诉你如何在自己的自定义脚本中实现依赖关系。关于我的最后一条评论,我这样做是为了你,并用细节编辑了我的答案:)+1表示建议使用.sln文件。如果您没有理由不希望VisualStudio管理生成的顺序,请不要重新发明轮子。我已更新了我的问题,以解释为什么我希望能够自定义生成过程。我将研究ProjectReference目标!!谢谢分享。我投票支持这个,因为“在项目文件中查找”提示。这是一个有用的资源,我没有意识到要使用它。谢谢。我接受这一点是因为MSBuild任务提示。这正是我想要使用的。在这个任务中,我可以引用另一个要构建的项目。谢谢。我想在不需要在我的解决方案中包含它们的情况下构建项目,这可能吗?这并不总是有效的。当我将解决方案从VS 2010转换为VS 2012时,该依赖项目从未在MSBuild.exe中生成(但在VS 2012中确实如此)。然而,添加“appclay”所描述的项目提示,它现在在这两种情况下都能工作。感谢您的链接!我遇到了和上面讨论的问题一样的问题。。。最后有个解决方案真是太好了。