首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个配置的Devenv build命令

多个配置的Devenv build命令
EN

Stack Overflow用户
提问于 2012-03-01 23:58:35
回答 3查看 5K关注 0票数 3

有没有办法发出一个命令行来构建一个包含所有配置的解决方案?

目前我们有5个配置,所以我们需要按以下格式发出这5个命令:

代码语言:javascript
复制
C:\Program Files\Microsoft Visual Studio 10.0\VC>devenv /Rebuild [configuration name] C:\Solutions\SolutionName.sln

例如:

代码语言:javascript
复制
devenv /Rebuild Debug C:\Solutions\SolutionName.sln
devenv /Rebuild DEV C:\Solutions\SolutionName.sln
devenv /Rebuild SIT C:\Solutions\SolutionName.sln
devenv /Rebuild BAT C:\Solutions\SolutionName.sln
devenv /Rebuild PROD C:\Solutions\SolutionName.sln

理想情况下,只有一个命令行。我尝试将所有配置名称放在一起,用空格分隔,但没有成功。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-02 00:06:35

不存在一次构建多个配置的语法(据我所知,并且我可以通过测试发现)。MSBuild中的配置属性似乎也不支持多个值。

为什么不直接将所需的命令放入批处理文件、powershell脚本甚至另一个MSBuild文件中并启动它呢?

票数 2
EN

Stack Overflow用户

发布于 2012-03-02 17:23:54

尝试使用称为“混合平台”的解决方案级平台。See this post。如果您有更多的配置,并且每个项目都使用不同的配置,这将非常有用。

代码语言:javascript
复制
  msbuild.exe MixedProjects.sln /p:"Platform=Mixed Platforms" /p:Configuration=Debug
票数 0
EN

Stack Overflow用户

发布于 2014-12-05 14:28:35

不知道,也许会对某些人有用:

BuildVCSolution.js

代码语言:javascript
复制
var objNamedArguments = WScript.Arguments.Named;
var objUnnamedArguments = WScript.Arguments.Unnamed;
var fKeepSUO = objNamedArguments.Exists("KeepSUO");
if (objNamedArguments.Length > 1 || (objNamedArguments.Length == 1 && fKeepSUO == false) || objUnnamedArguments.Length != 1)
{
    WScript.Echo("\nUsage: " + WScript.ScriptName + " <Solution Pathname> [/KeepSUO]\n");
    WScript.Quit();
}
var objFSO =  WScript.CreateObject("Scripting.FileSystemObject");
var strSolutionPathName = objFSO.GetAbsolutePathName(objUnnamedArguments(0));
var objDTE = WScript.CreateObject("VisualStudio.DTE");
var objTextEditorCAndCPPDisableDatabaseProperty = objDTE.Properties("TextEditor", "C/C++ Specific").Item("DisableDatabase");
var fDisableDatabase = objTextEditorCAndCPPDisableDatabaseProperty.Value;
objTextEditorCAndCPPDisableDatabaseProperty.Value = true;
var objSolution = objDTE.Solution;
objSolution.Open(strSolutionPathName);
var objSolutionBuild = objSolution.SolutionBuild;
var objSolutionBuildConfigurations = objSolutionBuild.SolutionConfigurations;
var objBuildOutputWindowPane = objDTE.Windows.Item("{34E76E81-EE4A-11D0-AE2E-00A0C90FFFC3}").Object.OutputWindowPanes.Item("Build");
objBuildOutputWindowPane.Activate();
for (var i = 0; i < objSolutionBuildConfigurations.Count; i ++)
{
    var objSolutionBuildConfigurationContexts = objSolutionBuildConfigurations.Item(i + 1).SolutionContexts;
    for (var j = 0; j < objSolutionBuildConfigurationContexts.Count; j ++)
    {
        var objSolutionBuildConfigurationContext = objSolutionBuildConfigurationContexts.Item(j + 1);
        if (objSolutionBuildConfigurationContext.ShouldBuild)
        {
            var strSolutionBuildConfigurationFullName = objSolutionBuildConfigurationContext.ConfigurationName + "|" + objSolutionBuildConfigurationContext.PlatformName;
            objSolutionBuild.BuildProject(strSolutionBuildConfigurationFullName, objSolutionBuildConfigurationContext.ProjectName, true);
            WScript.Echo(objBuildOutputWindowPane.TextDocument.StartPoint.CreateEditPoint().GetText(objBuildOutputWindowPane.TextDocument.EndPoint));
        }
    }
}
objSolution.Close();
objTextEditorCAndCPPDisableDatabaseProperty.Value = fDisableDatabase;
objDTE.Quit();
if (fKeepSUO == false)
{
    var strSUOPathName = objFSO.BuildPath(objFSO.GetParentFolderName(strSolutionPathName), objFSO.GetBaseName(strSolutionPathName)) + ".suo";
    objFSO.DeleteFile(strSUOPathName);
}

此WSH脚本演示了Visual Studio 2010核心自动化对象模型在构建项目时的用法。这个脚本的主要目标是通过一个命令行构建一个包含所有项目配置的解决方案。使用其他技术来显示构建日志并禁止创建.sdf和.suo文件(也可以保留.suo文件)。

用法:

cscript.exe BuildVCSolution.js <Solution pathname>

或者只是

BuildVCSolution.js <Solution pathname>

如果cscript.exe是默认的脚本主机服务器。

例如:

BuildVCSolution.js "D:\Development\Projects\Sample Application\SampleApplication.sln"

在Windows7 x64 SP1上使用Visual Studio2010 SP1进行了测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9519469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档