Warum wird die Option "Als Start festlegen" in der suo-Datei und nicht in der sln-Datei gespeichert?

175

Es scheint, dass diese Einstellung in der Lösungsdatei gespeichert werden sollte, damit sie von allen Benutzern und einem Teil der Quellcodeverwaltung gemeinsam genutzt wird. Da wir die suo-Datei nicht einchecken, muss jeder Benutzer dies separat einstellen, was seltsam erscheint.

Leora
quelle

Antworten:

46

Warum sollte es eine nicht benutzerspezifische Präferenz sein?

Wenn ich eine Lösung mit 10 Dateien habe und ein Entwickler hauptsächlich eines dieser Tools testet / verwendet, warum sollte sich das auf das auswirken, was ich starte?

Ich denke, MS hat in diesem Fall die richtige Wahl getroffen. Das Projekt, das ich starten möchte, ist bei weitem nicht unbedingt das Projekt, das andere Entwickler starten möchten.

Jon Skeet
quelle
132
Häufig haben Sie ein Projekt, das sehr wahrscheinlich das von den meisten Menschen gewünschte Startprojekt für das Debuggen ist (z. B. Website), und Sie möchten keine Klassenbibliothek als Startprojekt. Ich verstehe nicht, warum MS keinen geeigneten Mechanismus bereitstellen konnte (nicht was wie ein Hack aussieht, dh den Standard in der SLN-Datei oben zu platzieren), um ein globales Standardstartprojekt festzulegen und dann einen zuzulassen. suo, um es zu überschreiben, wenn gewünscht.
Jez
27
Es gibt sozusagen ... Verschieben Sie das Projekt, das Sie als Standardstartprojekt festlegen möchten, als erstes Projekt in der sln-Datei. Löschen Sie Ihre Suo-Datei, öffnen Sie die Lösung erneut und woila, das erste Projekt sollte der Start sein. Es mag andere Faktoren geben, die dazu beitragen, aber ich fand es, als ich bemerkte, dass ein bestimmtes Projekt immer wieder in Verzug geriet, als ich ein sauberes Projekt aus der Quellcodeverwaltung auscheckte.
Misteraidan
2
Dies ist ein Problem bei der Verwendung eines Build-Servers, da das Einchecken des Suo in die Versionskontrolle erforderlich ist, um das richtige Startprojekt festzulegen, und das Einchecken des Suo in die Versionskontrolle eine schlechte Idee ist.
Markshancock
2
@markshancock: Warum sollte sich ein Build-Server für das Startprojekt interessieren? Ich habe das nie als Problem gesehen.
Jon Skeet
18
Es tut mir leid, Jon, aber ich werde dir hier eine -1 geben. Ich bin der Überzeugung, dass Entwickler die Möglichkeit haben sollten, Code herunterzuladen und dann F5 zu drücken, in der Erwartung, dass das üblichste Entwicklungssetup erstellt und gestartet wird. Natürlich sollten Sie die Möglichkeit haben, Ihre Startups an die persönlichen Umstände anzupassen, aber wir sollten in der Lage sein, für die meisten Benutzer einen Standard festzulegen, wie oben angegeben. Olivers Antwort scheint in diese Richtung zu gehen, obwohl es den Anschein hat, dass mehrere Start-up-Projekte nicht in die Quellcodeverwaltung eingecheckt werden können, was eine Schande ist.
Stephen Holt
376

Es ist absolut notwendig, dass jeder sein StartUp-Projekt selbst definieren kann, wie Jon bereits gesagt hat . Aber einen dedizierten Standard zu haben, wäre großartig, und wie ich sehen kann, ist es möglich!

Wenn sich in Ihrem Lösungsverzeichnis keine .suo-Datei befindet, wählt Visual Studio das erste Projekt in Ihrer .sln-Datei als Standardstartprojekt aus.

  1. Schließen Sie Ihr Visual Studio und öffnen Sie die SLN-Datei in Ihrem bevorzugten Texteditor. Ab Zeile 4, sehen Sie alle Ihre Projekte eingekapselt in Project- EndProjectLinien.

  2. Schneiden Sie das gewünschte Standardstartprojekt aus und fügen Sie es an der obersten Position ein.

  3. Löschen Sie Ihre .suo-Datei.

  4. Öffnen Sie Ihre Lösung in Visual Studio. Ta daa!

Gibt es eine besondere Auszeichnung, wenn Sie etwas wissen, das Jon nicht weiß? ;-);

Oliver
quelle
1
Endlich! Das nervt mich schon lange, aber nicht mehr! Tkanks :)
mdonatas
4
Es scheint nur zu funktionieren, wenn nicht in einem Lösungsordner: Ich meine, dieser Trick funktioniert für Root-Projekte, aus meiner Erfahrung mit einigen Lösungen, die ich habe.
Jdehaan
24
BEEINDRUCKEND! Du hast Jon skeptisch gemacht! :))
Andrei Rînea
3
Was ist, wenn es zwei Standardprojekte gibt? Wie kann ich beide standardmäßig starten?
Amy B
6
@Oliver: Klicken Sie mit der rechten Maustaste auf Lösung -> SetUp-Projekte festlegen ... -> Mehrere Startprojekte. Ein Klick startet mehrere.
Anton
46

In den meisten Fällen ist es tut Sinn machen , auf diese eine Standard zu haben.

Es wäre viel besser, ein Standard-Startprojekt aufzunehmen und dieses in der SLN-Datei zu speichern, die jedoch von einem Entwickler in der SUO-Datei überschrieben werden kann. Wenn die Starteinstellung nicht in der .suo-Datei gefunden wird, wird das Standardstartprojekt in der .sln-Datei verwendet.

Tatsächlich wurde dies in UserVoice von Visual Studio vorgeschlagen .

Wim Hollebrandse
quelle
Die verlinkte UserVoice ist "wegen Abstimmung geschlossen", aber es gibt keinen Kommentar dazu, warum.
Yzorg
Dies ist definitiv die bessere Haltung im Vergleich zur akzeptierten Antwort. Ich habe noch kein einziges Mal in einem Team gearbeitet, das es für einen Vorteil hielt, dies auf Benutzerbasis festzulegen. Es führt nur zu zusätzlichen Einstellungen für frische Klone usw.
Trevor Reid
3

Ich habe ein kleines Befehlszeilenprogramm für Windows geschrieben slnStartupProject, mit dem das Startprojekt automatisch festgelegt werden soll:

slnStartupProject slnFilename projectName

Ich persönlich verwende es, um das Startprojekt nach dem Generieren der Lösung mit cmake festzulegen , das immer ein Dummy- ALL_BUILDProjekt als erstes Projekt in der Lösung festlegt .

Die Quelle ist auf GitHub. Gabeln und Feedback sind willkommen.

michaK
quelle
Danke dafür! Ich hatte genau dieses Problem mit cmake und Ihr Dienstprogramm funktioniert hervorragend!
Sippa
1
Bitte! Ich bin froh, dass es hilft, da es mich seit Jahren nervt, bevor ich mich entschied, das endgültig zu lösen. Verstehe nicht wirklich, warum Menschen darüber philosophische Streitereien führen, obwohl dies in den meisten Fällen eindeutig nützlich ist.
michaK
Sie ... warten ... was? - Sie generieren Ihre SLN-Datei manuell? ... was ist das für eine Zauberei?
BrainSlugs83
3

Wenn Sie GIT verwenden, können Sie die Standard-SUO-Datei festschreiben und sie dann mit unverändert als unverändert markieren

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

Dies funktioniert auch, wenn Sie mehr als ein Projekt in Ihrer Standardstartgruppe haben möchten. Der einzige mir bekannte Nachteil ist, dass dieser Befehl von allen ausgeführt werden muss, die die SUO-Datei nicht festschreiben möchten.

sebetovsky
quelle