当我在解决方案资源管理器中右键单击我的解决方案并选择属性时,我会出现一个对话框,我可以在其中选择启动项目。
我有时会选择当前选择(如果它是一个实验性解决方案,我在其间跳过很多项目),但大多数情况下它是选择的单个启动项目,通常是主要的WinForms应用程序或控制台应用程序。
我的问题是每当我使用tfpt命令(Team Foundation Power Tools 2008)进行树清理时,此设置都会被遗忘。因此,当我下次尝试运行我的解决方案时,它违反了一些随机项目,并且我收到一条错误,指出我无法运行类库或类似的东西。这当然是显而易见的。但这个设置存储在哪里?当我做树干时,为什么会忘记它?解决方案文件仍然存在,对吧?是否存储了解决方案属性?
答案 0 :(得分:17)
我正在努力想象 为什么我的某种解决方案 没有正确的开始。这是在VB 有四个项目。初次开放时 它会设置一个特定的项目 DLL输出为启动。如果我设置了 EXE作为启动项目,很好, 但是当我总是分发代码时 通过删除* .suo和* .user来清除它 文件和bin / obj文件夹。上 打开“清洁”版本吧 总是会恢复到DLL项目 并且很难完成F5。修复转了 出于简单,虽然我很好奇 至于为什么我需要这样做。
在解决方案文件中,有一个列表 伪XML“项目”条目。它 事实证明,无论第一个是什么 一个最终作为启动项目, 除非它在suo中被覆盖 文件。哎呀。我只是重新安排了 在文件中订购,这很好。
我猜C#的方式是一样的 但我没有测试它。我希望 这有助于某人!
哪个项目是“启动”项目,只与调试有关,这意味着它是解决方案和项目的用户元数据。无论哪个项目是“启动”项目,编译的代码都是相同的。
因此,信息将作为用户设置存储在解决方案文件(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
欢迎福克斯和反馈。
希望这有帮助!