Perché l'opzione "Imposta come avvio" è memorizzata nel suo file e non nel file sln?


175

Sembra che questa impostazione debba essere archiviata nel file della soluzione in modo che sia condivisa tra tutti gli utenti e parte del controllo del codice sorgente. Dal momento che non controlliamo il suo file, ogni utente deve impostarlo separatamente, il che sembra strano.

Risposte:


46

Perché dovrebbe essere una preferenza non specifica per l'utente?

Se ho una soluzione con 10 file e uno sviluppatore sta testando / utilizzando principalmente uno di questi strumenti, perché dovrebbe influire su ciò che avvio?

Penso che MS abbia fatto la scelta giusta su questo. Il progetto che voglio iniziare è lungi dall'essere necessariamente il progetto che altri sviluppatori vogliono iniziare.


133
Spesso avrai un progetto che molto probabilmente sarà il progetto di avvio desiderato dalla maggior parte delle persone per il debug (ad es. Sito Web) e non desideri una libreria di classi come progetto di avvio. Non vedo perché MS non sia in grado di fornire un meccanismo adeguato (non quello che sembra un hack, ovvero mettere quello predefinito in alto nel file .sln) per impostare un progetto di avvio predefinito globale e quindi consentire un. suo per sovrascriverlo se lo si desidera.
Jez,

27
C'è, in un certo senso ... Sposta il progetto che vuoi impostare come progetto di avvio predefinito in modo che sia il primo progetto nel file sln. Elimina il tuo file suo, riapri la soluzione e woila, quel primo progetto dovrebbe essere l'avvio. Potrebbero esserci altri fattori che contribuiscono a questo, ma l'ho trovato quando ho notato che un progetto in particolare continuava a diventare predefinito quando ho estratto un progetto pulito dal controllo del codice sorgente.
misteraidan,

2
Questo è un problema quando si usa un server di compilazione perché richiederebbe di controllare il suo nel controllo della versione per impostare il progetto Startup corretto e controllare il suo nel controllo della versione è una cattiva idea.
Markshancock,

2
@markshancock: Perché un server di build dovrebbe preoccuparsi del progetto di avvio? Non l'ho mai visto come un problema.
Jon Skeet,

18
Mi dispiace, Jon, ma ti darò un -1 qui. Sono convinto che gli sviluppatori dovrebbero avere la possibilità di scaricare il codice e quindi premere F5, aspettandosi che la configurazione di sviluppo più usuale venga creata e avviata. Ovviamente, dovresti avere la possibilità di personalizzare le tue startup per circostanze personali, ma dovremmo essere in grado di impostare un valore predefinito per la maggior parte degli utenti, come indicato sopra. La risposta di Oliver sembra andare in qualche modo per farlo, anche se sembra che più progetti di avvio rimarranno impossibili da controllare nel controllo del codice sorgente, il che è un peccato.
Stephen Holt,

376

È assolutamente necessario che tutti possano definire autonomamente il proprio progetto StartUp, come ha già detto Jon . Ma avere un default dedicato sarebbe fantastico, e come posso dire, è possibile!

Se non si dispone di un file .suo nella directory della soluzione, Visual Studio seleziona il primo progetto nel file .sln come progetto di avvio predefinito.

  1. Chiudi Visual Studio e apri il file .sln nel tuo editor di testo preferito. A partire dalla riga 4, vedi tutti i tuoi progetti incapsulati in Project- EndProjectrighe.

  2. Taglia e incolla il progetto di avvio predefinito desiderato nella posizione più alta.

  3. Elimina il tuo file .suo.

  4. Apri la tua soluzione in Visual Studio. Ta daa!

C'è un premio speciale se sai qualcosa che Jon non conosce? ;-)


1
Finaly! Questo mi infastidisce da molto tempo ma non più! Tkanks :)
mdonatas,

4
Sembra funzionare solo se non in una cartella della soluzione: intendo questo trucco funziona per i progetti di root, dalla mia esperienza con alcune soluzioni che ho.
Jdehaan,

25
WOW! Jon Skeeted! :))
Andrei Rînea il

3
Cosa succede se ci sono due progetti predefiniti: come posso avviarli entrambi per impostazione predefinita?
Amy B,

6
@Oliver: tasto destro del mouse su Soluzione -> Imposta progetti di avvio ... -> Più progetti di avvio. Un clic inizia più volte.
Anton,

46

Nella maggior parte dei casi, non ha senso avere un default su questo.

Sarebbe molto meglio ospitare un progetto di avvio predefinito e archiviarlo nel file .sln, ma che può essere sovrascritto da uno sviluppatore nel proprio file .suo. Se l'impostazione di avvio non viene trovata nel file .suo, verrà utilizzato il progetto di avvio predefinito in .sln.

In realtà, questo è stato suggerito sulla UserVoice di Visual Studio .


La UserVoice collegata è "chiusa per la votazione" ma nessun commento sul perché.
yzorg,

Questa è sicuramente la posizione migliore rispetto alla risposta accettata. Non ho mai lavorato in una squadra che lo considerasse un vantaggio per impostare questo su una base per utente. Porta solo a una configurazione aggiuntiva su nuovi cloni, ecc.
Trevor Reid

3

Ho scritto una piccola utility da riga di comando per Windows chiamata slnStartupProjectper impostare automaticamente il progetto di avvio:

slnStartupProject slnFilename projectName

Lo uso personalmente per impostare il progetto di avvio dopo aver generato la soluzione con cmake che imposta sempre un ALL_BUILDprogetto fittizio come primo progetto nella soluzione.

La fonte è su GitHub. Forks e feedback sono i benvenuti.


Grazie per questo! Stavo riscontrando esattamente questo problema con cmake e la tua utility funziona alla grande!
sippa,

1
Prego! Felice aiuta perché mi ha infastidito per anni prima che decidessi di risolverlo per sempre. Non capisco davvero perché le persone abbiano litigi filosofici su questo mentre è chiaramente utile nella maggior parte dei casi.
MichaK,

Aspetta ... cosa? - generi manualmente il tuo file .sln? ... che stregoneria è questa?
BrainSlugs83,

3

Se si utilizza GIT, è possibile eseguire il commit del file SUO predefinito e quindi contrassegnarlo come invariato utilizzando

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

Funziona anche se vuoi avere più di un progetto nel tuo gruppo iniziale predefinito. L'unico svantaggio che conosco è che questo comando deve essere eseguito da tutti coloro che non vogliono eseguire il commit del file SUO.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.