command-line - 如何在解决方案名称 (*.sln) 上使用通配符调用 msbuild?

标签 command-line msbuild

我的文件夹中有一些解决方案文件 (*.sln)。如何在不显式指定解决方案名称的情况下为它们中的每一个调用 msbuild?通常的语法是:

msbuild <solution-name>.sln /P:Configuration=<Debug,Release>

我试过这个命令,但显然不支持:

msbuild *.sln /P:Configuration=<Debug,Release>

是否可以在不知道解决方案名称的情况下执行 msbuild?

最佳答案

在命令行中使用for循环遍历dir *.sln的结果:

for %i in ( dir *.sln ) do ( msbuild %i /p:Configuration=Debug )

或者使用 msbuild 文件来做同样的事情。最后这可能会更有趣,因为它允许更多的调整和自动化。例如,下面显示的代码会自动构建调试和发布版本,并且可以扩展更多。您还可以传递目录以扫描解决方案,默认情况下它会选择 msbuild 文件所在的目录。这样的事情在命令行或使用批处理文件时会更难、更难看。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">

  <PropertyGroup>
    <!-- directory where the solution files are -->
    <SlnDir Condition="'$(SlnDir)' == ''">$(MSBuildThisFileDirectory)</SlnDir>
  </PropertyGroup>

  <ItemGroup>
    <!-- list solution files -->
    <ProjectFiles Include="$(SlnDir)\*.sln"/>
    <!-- list configurations to build -->
    <Configurations Include="Debug;Release"/>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild Projects="@(ProjectFiles)" Targets="Cli" Properties="Configuration=%(Configurations.Identity)"/>
  </Target>

</Project>

关于command-line - 如何在解决方案名称 (*.sln) 上使用通配符调用 msbuild?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867846/

相关文章:

php - PHP 中的退出状态仅在从命令行运行时有用吗?

c - 如何在C中从命令行读取*

powershell - 使用经过转换的 web.config 发布后更新 Azure CSPKG

visual-studio - 在 CI 服务器上的 MSBuild 中构建期间从解决方案中排除项目

.net - 有没有办法从命令行确定 .NET Framework 版本?

linux - 带有 -aF 选项的 ls 的输出不清楚

c# - 自定义 MSBuild 任务 : how to flush logging in VS2012 output window while task is still running?

c# - MSBuild 属性引用

msbuild - TeamCity - 如何创建安装程序包?

python - 如何添加和删除系统环境变量 "PATH"?