为什么“设置为启动”选项存储在suo文件中而不是sln文件中?


175

似乎此设置应存储在解决方案文件中,以便在所有用户和部分源代码控制中共享。由于我们不签入suo文件,因此每个用户都必须单独设置它,这似乎很奇怪。

Answers:


46

为什么应该是非特定于用户的首选项?

如果我有一个包含10个文件的解决方案,而一个开发人员主要在测试/使用这些工具之一,那么为什么这会对我的启动产生影响?

我认为MS在这一方面做出了正确的选择。这个项目想开始是远远一定的项目其他开发商要启动。


132
通常,您有一个项目很可能是大多数人想要的调试启动项目(例如,网站),并且您不希望将类库作为启动项目。我不明白为什么MS无法提供适当的机制来设置全局默认启动项目,然后允许使用。机制,而不是将hack放在.sln文件的顶部。如有需要,请覆盖。
Jez 2012年

27
从某种意义上讲,是...将要设置为默认启动项目的项目移至sln文件中的第一个项目。删除您的suo文件,重新打开解决方案,然后打开woila,该第一个项目应为启动项目。可能还有其他因素对此造成影响,但是当我注意到当从源代码管理中检出一个干净的项目时,一个特别的项目仍在默认情况下才发现它。
misteraidan

2
在使用构建服务器时,这是一个问题,因为它将需要将suo放入版本控制中以设置正确的启动项目,并将suo放入版本控制中是一个坏主意。
markshancock

2
@markshancock:为什么构建服务器会关心启动项目?我从来没有认为这是一个问题。
乔恩·斯基特

18
抱歉,乔恩,但我在这里给您-1。我相信开发人员应该能够下载代码,然后按F5键,并期望可以构建和启动最常用的开发设置。当然,您应该能够根据个人情况量身定制创业公司,但是如上所述,我们应该能够为大多数用户设置默认值。Oliver的答案似乎可以做到这一点,尽管似乎多个启动项目仍然无法检入源代码控制,这实在令人遗憾。
斯蒂芬·霍尔特

376

正如乔恩已经说过的,每个人都必须自己定义他们的启动项目,这是绝对必要的。但是拥有一个专门的默认值将是很好的,而且据我所知,这是可能的!

如果您的解决方案目录中没有.suo文件,Visual Studio将选择.sln文件中的第一个项目作为默认启动项目。

  1. 关闭您的Visual Studio,然后在您喜欢的文本编辑器中打开.sln文件。从第4行开始,您将看到所有项目都封装在ProjectEndProject行中。

  2. 将所需的默认启动项目剪切并粘贴到顶部。

  3. 删除您的.suo文件。

  4. 在Visual Studio中打开您的解决方案。da!

如果您知道乔恩不知道的事情,会获得特别奖吗?;-)


1
结局!这已经困扰了我很长时间了,但现在再也没有了!Tkanks :)
mdonatas

4
它似乎只有在解决方案文件夹中才有效:我的意思是,根据我对某些解决方案的经验,该技巧适用于根项目。
jdehaan 2012年

24
哇!你Sk了乔恩!:))
AndreiRînea2012年

3
如果有两个默认项目,该怎么办-如何默认启动两个项目?
艾米B

6
@Oliver:右键单击解决方案->设置启动项目...->多个启动项目。一键启动多个。
安东

46

在大多数情况下,对此设置默认值确实很有意义。

最好容纳一个默认的启动项目并将其存储在.sln文件中,但是开发人员可以在其.suo文件中覆盖它。如果在.suo文件中找不到启动设置,则将使用.sln中的默认启动项目。

实际上,这已在Visual Studio的UserVoice中提出


链接的UserVoice已“关闭以投票”,但没有评论原因。
yzorg

与接受的答案相比,这绝对是更好的立场。我从来没有在一个团队中工作过,它认为以每个用户为单位进行设置是一种优势。它只是导致额外的设置上新鲜克隆等
特雷弗·里德

3

我为Windows编写了一个命令行实用程序,用于slnStartupProject自动设置启动项目:

slnStartupProject slnFilename projectName

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

是在GitHub上。欢迎提供叉子和反馈。


谢谢你!我在使用cmake时遇到了这个问题,您的实用程序效果很好!
sippa 2014年

1
别客气!很高兴它有所帮助,因为它困扰了我好多年,直到我决定彻底解决这个问题。虽然在大多数情况下显然有用,但并不真正理解人们为什么对此进行哲学斗争。
michaK 2014年

你..等等...什么?-您是手动生成.sln文件吗?...这是什么法术?
BrainSlugs83 2015年

3

如果使用的是GIT,则可以提交默认的SUO文件,然后使用标记为未更改。

git update-index --assume-unchanged YourSolution.suo

如果要在默认启动组中包含多个项目,它也可以工作。我知道的唯一缺点是,该命令必须由不想提交SUO文件的每个人运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.