不知道,也许对某人有用:
构建VCSolution.js
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"
在 Windows 7 x64 SP1 上使用 Visual Studio 2010 SP1 进行测试。