如何从C#代码以编程方式构建我的解决方案文件?
|
我有一个包含许多项目的大型解决方案,其中一个是安装项目。还有许多当前版本存储在单独的分支中。我有一个曾经在.NET 2中工作的构建工具,但是自从升级到.NET 4以来一直没有工作。
在内部,新的.NET 4版本的构建工具使用
Microsoft.TeamFoundation.Client.RegisteredTfsConnections.GetProjectCollections()
和versionControlServer.GetAllTeamProjects(false)
从我的TFS源代码控制服务器中获取ѭ2collection的集合。
然后,我在UI中直观地显示它们,并且当用户单击特定的解决方案版本时,应用程序将调用以下命令以获取该解决方案版本的最新信息:
workspace.Get(new string[] { serverPath }, VersionSpec.Latest, RecursionType.Full,
GetOptions.GetAll);
用于构建解决方案文件的应用程序,其中包括Setup项目。在此阶段,安装项目将创建一个可以与应用程序一起安装的MSI。这是我遇到的最后一步。
我需要能够以编程方式构建用户使用C#代码选择的解决方案。可用的.NET 2代码如下:
Process process = new Process();
ProcessStartInfo processStartInfo = process.StartInfo;
processStartInfo.FileName = processName;
processStartInfo.Arguments = string.Format(\" \\\"{0}\\\" /BUILD \\\"Release|Any CPU\\\"\",
solutionPath);
processStartInfo.WorkingDirectory = processDirectory;
process.Start();
运行此命令时没有错误,但是它不再启动Visual Studio并生成代码。显然,这最初是一种糟糕的方法,但是我无法使用TFS类找到“正确”的方法。
我还尝试了直接运行MSBuild.exe(类似于上面的示例),这确实可以构建解决方案,但是由于某些原因,它不能构建产生MSI的安装项目。请注意,我不使用任何手动创建的构建文件。
不幸的是,很难找到有关Microsoft.TeamFoundation命名空间的有用文档!我希望这里有人可以使用这些类,并可以指导我解决此问题。
如果可能的话,我需要使用.NET类(例如,不是Process.Start),因为我真的需要知道构建何时完成。但是,如果要求太多,我可以为此设置一个“ 5”对象。
没有找到相关结果
已邀请:
2 个回复
嘘伪
徘廷