VS2008:为解决方案存储的启动项目设置在哪里?

时间:2009-08-06 12:30:37

标签: visual-studio-2008 properties projects-and-solutions

当我在解决方案资源管理器中右键单击我的解决方案并选择属性时,我会出现一个对话框,我可以在其中选择启动项目。

我有时会选择当前选择(如果它是一个实验性解决方案,我在其间跳过很多项目),但大多数情况下它是选择的单个启动项目,通常是主要的WinForms应用程序或控制台应用程序。

我的问题是每当我使用tfpt命令(Team Foundation Power Tools 2008)进行树清理时,此设置都会被遗忘。因此,当我下次尝试运行我的解决方案时,它违反了一些随机项目,并且我收到一条错误,指出我无法运行类库或类似的东西。这当然是显而易见的。但这个设置存储在哪里?当我做树干时,为什么会忘记它?解决方案文件仍然存在,对吧?是否存储了解决方案属性?

3 个答案:

答案 0 :(得分:17)

参考文献1

Arian Kulp说:

  

我正在努力想象   为什么我的某种解决方案   没有正确的开始。这是在VB   有四个项目。初次开放时   它会设置一个特定的项目   DLL输出为启动。如果我设置了   EXE作为启动项目,很好,   但是当我总是分发代码时   通过删除* .suo和* .user来清除它   文件和bin / obj文件夹。上   打开“清洁”版本吧   总是会恢复到DLL项目   并且很难完成F5。修复转了   出于简单,虽然我很好奇   至于为什么我需要这样做。

     

在解决方案文件中,有一个列表   伪XML“项目”条目。它   事实证明,无论第一个是什么   一个最终作为启动项目,   除非它在suo中被覆盖   文件。哎呀。我只是重新安排了   在文件中订购,这很好。

     

我猜C#的方式是一样的   但我没有测试它。我希望   这有助于某人!

参考文献2

Setting the StartUp Project

  

哪个项目是“启动”项目,只与调试有关,这意味着它是解决方案和项目的用户元数据。无论哪个项目是“启动”项目,编译的代码都是相同的。

     

因此,信息将作为用户设置存储在解决方案文件(solution.sln)附带的解决方案用户选项文件(solution.suo)中。 .suo文件“记录您可能与解决方案关联的所有选项,以便每次打开它时,它都包含您根据MSDN进行的自定义。”

     

.suo文件是二进制文件。如果要以编程方式读取或更改它,则必须使用Microsoft.VisualStudio.Shell.Interop命名空间中的IVsPersistSolutionOpts.LoadUserOptions

答案 1 :(得分:1)

我怀疑此设置会保存为编辑解决方案文件时创建的.suo文件的一部分。此文件包含各种用户设置,例如断点,监视数据等。

我无法证实这一点,但那是我的猜测。

不幸的是,它不是XML的二进制文件,不易编辑。

答案 2 :(得分:0)

我刚刚为Windows编写了一个名为 slnStartupProject 的命令行实用程序来解决此问题。它会自动设置启动项目:

slnStartupProject slnFilename projectName

在使用cmake生成解决方案之后,我个人使用它来设置项目,该解决方案始终将虚拟 ALL_BUILD 项目设置为解决方案中的第一个项目。

源代码在github上:

https://github.com/michaKFromParis/slnStartupProject

欢迎福克斯和反馈。

希望这有帮助!