【问题标题】:Is there a way to automate build order for specific projects in a solution?有没有办法自动化解决方案中特定项目的构建顺序?
【发布时间】:2019-08-14 06:05:22
【问题描述】:

我正在使用 Visual Studio 2017。我们的团队有一个整合的解决方案,其中包含很多项目,并且有很多依赖项。我们正在开发一个新项目,我想知道是否有任何方法(可能是工具或脚本)以特定顺序构建特定项目(不是整个解决方案)? 目前为了构建我们手动进行。

【问题讨论】:

  • 也许你可以新建一个控制项目。编辑 csproj 文件并试一试。类似于this issue
  • 什么样的依赖?如果依赖项是通过项目引用指定的,MSBuild 可以自动处理。
  • @LexLi 我和我的团队还没有指定新项目的依赖关系(原因是因为它将来可能会改变,根据经验,在之后更改项目之间的依赖关系很复杂这些项目已构建),因此同时我们需要一个选项,可以仅按特定顺序构建这些项目文件,而不是手动构建。
  • 现阶段要做什么太宽泛了,把一个解决方案拆分成太多的小项目也不是一个好主意。
  • @LexLi 我同意你的观点,这不是一个好行为......但每次手动构建仍然会消耗大量时间。

标签: visual-studio build visual-studio-2017


【解决方案1】:

您可以使用SolutionBuild.BuildProject 方法并像这样从Visual Commander 调用它:

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    {
        EnvDTE.SolutionBuild builder = DTE.Solution.SolutionBuild;
        builder.BuildProject("Debug", @"C:\ClassLibrary\WindowsFormsApp1\WindowsFormsApp1.csproj", true);
        builder.BuildProject("Debug", @"C:\ClassLibrary\WpfApp1\WpfApp1.csproj", true);
    }
}

【讨论】:

  • 哇!谢谢@Sergey!你应该得到更多的支持!我看到您可以决定解决方案构建配置(在您的示例“调试”中),我想知道是否可以为每个构建决定解决方案平台(如 x64\Any CPU)?
  • BuildProject 不可能:stackoverflow.com/questions/35184304/…
  • 可能可以使用 SolutionConfiguration2.Activate() -> IVsSolutionBuildManager.FindActiveProjectCfg -> IVsProjectCfg.get_BuildableProjectCfg -> IVsBuildableProjectCfg.StartBuild 来决定平台,但要复杂得多。
【解决方案2】:

您可以使用 MSBuild 在 Visual Studio 之外为特定配置和平台构建项目:

"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" "C:\ClassLibrary\ConsoleApplication2\ConsoleApplication2.vcxproj" /t:Build /p:Configuration=Debug /p:Platform="x64"
"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" "C:\ClassLibrary\ConsoleApplication2\ConsoleApplication2.vcxproj" /t:Build /p:Configuration=Debug /p:Platform="Any CPU"

【讨论】:

    【解决方案3】:

    考虑使用 Visual Studio 的“外部工具” (菜单 -> 工具 -> 外部工具...)

    您可以从“外部工具...”调用脚本,该脚本基于传递的参数将构建所需的项目。您需要编写此脚本(例如 .bat 文件),其中包含基于输入参数需要构建哪些项目的逻辑...

    在此处阅读 VS 中“外部工具”菜单的更多信息: https://docs.microsoft.com/en-us/visualstudio/ide/managing-external-tools?view=vs-2017

    将参数传递给命令

    在“外部工具”对话框中,您可以将所需的参数传递给脚本

    • 当前选择的项目为 $(ProjectFileName)
    • 要指定构建配置和平台(debug|release, Any CPU|x64|x86),勾选“Prompt for arguments”复选框

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 2016-04-18
      • 1970-01-01
      • 2021-03-08
      • 2023-04-09
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多