2012-07-11 2 views
11

Uso il controllo del codice sorgente TFS.Durante la modifica del file Resources.resx, Resources.Designer.cs non si aggiorna perché TFS non lo controlla

Quando aggiungo una nuova chiave di risorsa al mio file di risorse - Resources.resx - e premo save, TFS controlla Resources.resx ma non controlla Resources.Designer.cs. Questo fa sì che l'aggiornamento per Resources.Designer.cs a fallire con errore:

The command you are attempting cannot be completed because the file 'Resources.Designer.cs' that must be modified cannot be changed. If the file is under source control, you may want to check it out; if the file is read-only on disk, you may want to change its attributes.

enter image description here

L'errore è corretta in quanto il file è di sola lettura e il file non è estratto. Non voglio dover controllare manualmente il progettista ogni volta che aggiungo/modifica una chiave di risorsa. Qualcuno sa di una soluzione o aggira questo problema?

Nota che ho impostato TFS su "check out on save" anziché "check out on edit". Questo è intenzionale per ridurre la quantità di checkout inediti.

EDIT:

Questo accade in altri tipi di file anche. Ad esempio, sto usando RazorGenerator per creare viste MVC compilate. Lo stesso problema si verifica se provo a modificare il file .cshtml senza prima controllare .generated.cs.

UPDATE:

Questo problema si verifica su tutti (per quanto ho visto) i file che hanno un codice generato automaticamente-behind: resx, edmx, aspx, .cshtml (quando si utilizza RazorGenerator per le viste compilate), ecc. Ho deciso che non vale la pena il dolore solo per aver impostato "on edit: do nothing". Ho deciso di reimpostarlo su "on edit: checkout automatically". Grazie a tutti per il vostro contributo. No grazie al team TFS per questo FAIL.

+1

Il checkout in fase di salvataggio si attiva solo quando si salva il file, non si attiva quando il file viene generato automaticamente ... :(Ho paura che non si ottenga una risposta appropriata oltre a quella del progetto, ma potrebbe valere la pena aprire un caso su https://connect.microsoft.com/ e chiedi di cambiare questo comportamento –

+0

@GoranObradovic.Questa è la risposta migliore/più accurata che ho avuto. Pubblicala come risposta e otterrai la taglia. –

risposta

1

Beh, non pensavo che questo valesse come risposta, quindi l'ho scritto nel commento. Il checkout al salvataggio viene attivato solo quando si salva il file, non si innesca quando il file viene generato automaticamente (la generazione automatica non è il trigger per il salvataggio che esegue il checkout, poiché questo file viene modificato dallo strumento personalizzato assegnato a resx).

Temo che non otterrete la risposta corretta (quella che risolverà il problema) oltre a ciò che è di progettazione, ma potrebbe valere la pena aprire un caso su connect e chiedere di modificare questo comportamento.

1

Devo lavorare con TFS al lavoro. Ho visto molti miracoli e abbiamo passato molto tempo a capire dove si trova il problema. TFS è la scelta della mia azienda, ma non è la mia preferita.

TFS (soprattutto quando il server è lento e si verificano regolarmente problemi di rete) è un disastro per me come sviluppatore. VS cerca modifiche solo su file in soluzione e, come puoi vedere, non tutti. Quando si utilizzano strumenti di terze parti (idoneità per i test di integrazione o passaggi personalizzati) che richiede di modificare i file al di fuori di VS, probabilmente si otterrà lo stesso errore che si ha.

Ma abbiamo trovato una soluzione. Sulla mia macchina uso git. Abbiamo installato git-tfs. E tutto quello che dovete ricordare è di tre comandi magici

  • tfs git fetch
  • git merge telecomandi/TFS/default
  • git tfs ct

Questo è tutto. Non infrangerete mai le regole della compagnia. E allo stesso tempo sarai libero da quel tipo di strani problemi. Ci siamo dimenticati di quell'incubo.

MODIFICA: Gli spazi di lavoro locali nel prossimo TFS 2012 risolvono diversi problemi e TFS 2012 diventerà più vicino a SVN, ma non sarà DVCS.MS investi in integrazione con DVCS esterni - per favore, benvenuto - Git-TF.

+0

Questo mi causerebbe più fastidio di quello che ho attualmente.Al momento il mio lavoro è quello di eseguire il checkout esplicito del file prima di salvare .Sai a conoscenza di una soluzione più semplice mantenendo l'impostazione * onedit = donothing *? –

+1

il nuovo TFS (2012) ora rileva anche i file modificati al di fuori della soluzione. L'ho visto dimostrato, ma non riesco a trovare alcuna informazione diretta su questo sul web ... – Raf

+0

@raf Corretto, TFS 2012 ha il concetto di "aree di lavoro locali" ed è abilitato di default. –

1

penso che questo sia il problema

Note that I have TFS set up to "check out on save" as opposed to "check out on edit". This is deliberate to reduce the amount of unedited checkouts.

Per evitare sopra problema, ripristinare le impostazioni predefinite. Quindi scaricare gli utensili elettrici TFS. quindi utilizzare questo comando per annullare le modifiche che vengono estratti, ma non contengono modifiche

tfpt uu /noget 

Aggiornamento: Su cambiare sopra l'impostazione del problema non si verifica più. Per i dettagli, consultare la discussione di seguito nei commenti.

+0

Per me è più semplice controllare il file di risorse quando lo modifico. Si noti che le impostazioni correnti sono intenzionali e non reversibili. –

+0

@flem non è sopra l'impostazione a livello di client lato VS e non sul lato server TFS? Se lato client, puoi cambiare questo e vedere se funziona? – Ankush

+0

Ankush. Voglio questo. Inoltre, non voglio dover eseguire comandi tfpt ogni volta che effettuo il check-in. È più facile per me controllare esplicitamente questo particolare file. –

1

Perché vuoi ridurre la quantità di casse non autorizzate? Se un file viene archiviato senza modifiche, TFS rileva e non verrà visualizzato nella cronologia di controllo del file.

È possibile testare questo da soli controllando un singolo file e immediatamente il check-in. TFS vi dirà lì dove nessun cambiamento e il checkout è annullato.

enter image description here

Così forse considerare la creazione di nuovo alla cassa su Edit? Come accennato nell'altra risposta, questo risolverà i tuoi problemi ...

+0

Grazie, ma non è un'opzione. Voglio il checkout alla modifica disattivato. –