She*_*dan 4 c# build solution visual-studio-2010 tfs2010
我有一个包含许多项目的大型解决方案,其中一个是安装项目.还有许多当前版本存储在单独的分支中.我有一个曾经在.NET 2中工作的构建工具,但自从我们升级到.NET 4以来一直没有用.
在内部,构建工具的新.NET 4版本使用Microsoft.TeamFoundation.Client.RegisteredTfsConnections.GetProjectCollections()并从我的TFS源控制服务器versionControlServer.GetAllTeamProjects(false)获取TeamProjects 的集合.
然后,我在UI中以可视方式显示它们,当用户单击特定解决方案版本时,应用程序调用以下内容以获取该解决方案版本的最新信息:
workspace.Get(new string[] { serverPath }, VersionSpec.Latest, RecursionType.Full,
GetOptions.GetAll);
Run Code Online (Sandbox Code Playgroud)
用于构建解决方案文件的应用程序,包括安装项目.在此阶段,安装项目将创建可以安装应用程序的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();
Run Code Online (Sandbox Code Playgroud)
运行此命令时没有错误,但它不再启动Visual Studio并构建代码.很明显,这是一个很难做到最初的方法,但我找不到使用TFS类的"正确"方法.
我也尝试直接运行MSBuild.exe(类似于上面的例子),这确实构建了解决方案,但由于某种原因没有构建产生MSI的安装项目.请注意,我不使用任何手动创建的构建文件.
不幸的是,很难找到Microsoft.TeamFoundation命名空间的有用文档!我希望这里有人利用这些课程,并指导我解决这个问题.
如果可能的话,我需要使用.NET类(例如,不是Process.Start),因为我真的需要知道构建何时完成.但是FileSystemWatcher,如果这个问题太多,我可以为此设置一个对象.
msbuild会跳过安装程序项目,因为它不知道如何构建它们.FinalBuilder发送到devenv.exe来构建这些.
调用`devenv/build'发布|任何CPU"/项目"MyInstaller.vdproj"都应该从命令行运行你需要的构建,而无需启动VS GUI.试试吧!
尽管如此:我们也使用FinalBuilder,并且不推荐使用VS Installer,因此您可能希望计划更换它.
| 归档时间: |
|
| 查看次数: |
3238 次 |
| 最近记录: |