如何使用批处理文件一次性在多个目录中使用MSBuild解决方案?

3
我是一家初创公司的实习生。我对批处理文件、XML文件、命令提示符或msbuild一无所知,只了解C#的基础知识。
我的任务是制作一个批处理文件,允许用户在一个命令中构建目录中包含的七个子文件夹中的所有解决方案。我知道如何在单个文件夹中构建一个解决方案(使用msbuild mysolution.sln),但构建来自七个不同文件夹的多个解决方案超出了我的能力。
是否有可能创建一个批处理文件,让msbuild查找子文件夹中的所有解决方案文件并将它们全部一次性构建呢?
谢谢任何能够帮助的人。
1个回答

14
  1. 请将以下目标文件另存为 buildall.targets,并放置在你的解决方案目录根目录下。

<Project ToolsVersion="4.0" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         DefaultTargets="Default">

    <ItemGroup>
        <AllFiles Include=".\**\*.sln"/>
    </ItemGroup>

    <Target Name="Default">
         <MSBuild Projects="@(AllFiles)"/>
    </Target>

 </Project>
  • 创建名为 BuildAll.cmd 的批处理文件,内容如下:(根据您使用的 .NET Framework 版本更改 msbuild.exe 的路径)

  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild buildall.targets
    
  • 运行/执行BuildAll.cmd

  • 详见MSDN:如何选择要构建的文件,特别是“使用通配符指定输入”部分,以获得有关递归文件夹遍历的更多详情。


    谢谢您的快速回复。我已按照您所说的去做(希望是这样),但我收到了这个错误:error MSB4025:无法加载项目文件。出现意外的文件结尾。以下元素未关闭:Project。 第9行,第10个位置。您知道这是什么意思吗? - user1015106
    1
    @user1015106 这意味着您犯了复制/粘贴错误,至少漏掉了最后一行(包含 </Project>)。确保您将完整的“灰色框”复制到文件 buildall.targets 中。 - Christian.K
    谢谢你,Christian K. 和 sll。我非常感激你们的帮助。 - user1015106

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接