2012-07-11 6 views
11

Używam kontroli źródła TFS.Podczas edycji pliku Resources.resx Resources.Designer.cs nie aktualizuje się, ponieważ TFS go nie sprawdza

Kiedy dodaję nowy klucz zasobów do mojego pliku zasobów - Resources.resx - i wciskam save, TFS sprawdza Resources.resx, ale nie sprawdza Resources.Designer.cs. To powoduje aktualizację Resources.Designer.cs się niepowodzeniem z błędem:

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

Błąd słusznie, że plik jest tylko do odczytu i plik nie został wyrejestrowany. Nie chcę ręcznie sprawdzać projektanta za każdym razem, gdy dodaję/edytuję klucz zasobu. Czy ktoś wie o rozwiązaniu lub rozwiązaniu tego problemu?

Zauważ, że mam TFS ustawiony na "check out on save" w przeciwieństwie do "check out on edit". Jest to celowe, aby zmniejszyć liczbę nieedytowanych kas.

EDIT:

Dzieje się tak w innych typów plików również. Na przykład używam RazorGenerator do tworzenia skompilowanych widoków MVC. Ten sam problem występuje, gdy próbuję edytować plik .cshtml bez uprzedniego sprawdzenia pliku .generated.cs.

UPDATE:

Ten problem występuje na wszystkich (o ile widziałem) pliki, które mają wygenerowany automatycznie kod z opóźnieniem: .resx, .edmx, aspx, .cshtml (przy użyciu RazorGenerator dla skompilowanych widoków), itp. Postanowiłem, że nie jest to warte bólu tylko po ustawieniu "na edycję: nie rób nic". Zdecydowałem się zresetować to do "przy edycji: kasy automatycznie". Dziękuję wszystkim za twój wkład. Nie, dziękuję zespołowi TFS za ten błąd.

+1

Zamówienie zapisu jest wyzwalane tylko podczas zapisywania pliku, nie uruchamia się, gdy plik jest automatycznie generowany ... :(Niestety, nie otrzymasz poprawnej odpowiedzi poza tym, że jest on zgodny z projektem, ale może być warty otwarcia na stronie https://connect.microsoft.com/ i poproś o zmianę tego zachowania: –

+0

@GoranObradovic To jest najlepsza/najdokładniejsza odpowiedź, jaką miałem. Opublikuj ją jako odpowiedź, a otrzymasz nagrodę. –

Odpowiedz

1

Cóż, nie myślałem, że to się liczy jako odpowiedź, więc napisałem to w komentarzu. Zamówienie zapisu jest wyzwalane tylko podczas zapisywania pliku, nie uruchamia się, gdy plik jest automatycznie generowany (autogeneracja nie jest wyzwalana dla zapisu, który wykonuje kasę, ponieważ ten plik jest edytowany przez niestandardowe narzędzie przypisane do resx).

Obawiam się, że nie dostaniesz poprawnej odpowiedzi (tej, która rozwiąże twój problem) poza tym, że jest ona zaprojektowana, ale może warto otworzyć skrzynkę na connect i poprosić o zmianę tego zachowania.

1

Muszę pracować z TFS w pracy. Widziałem wiele cudów i spędziliśmy dużo czasu, zastanawiając się, gdzie jest problem. TFS to wybór mojej firmy, ale nie jest to moje ulubione.

TFS (zwłaszcza gdy serwer działa wolno i masz regularne problemy z siecią) jest dla mnie katastrofą jako programista. VS szuka modyfikacji tylko w plikach w roztworze i jak widać nie wszystkie. Kiedy używasz narzędzi stron trzecich (dopasowanie do testów integracyjnych lub niestandardowych kroków kompilacji), które wymagają modyfikacji plików poza VS - prawdopodobnie otrzymasz taki sam błąd, jaki masz.

Ale znaleźliśmy rozwiązanie. Na mojej maszynie używam git. Zainstalowaliśmy git-tfs. I wszystko trzeba pamiętać, trzy magiczne komendy

  • git tfs sprowadzić
  • git scalić piloty/TFS/default
  • git tfs ct

To wszystko. Nigdy nie złamiesz zasad firmy. A jednocześnie uwolnicie się od tego rodzaju dziwnych problemów. Zapomnieliśmy o tym koszmarze.

EDIT: lokalne obszary robocze w nadchodzącym TFS 2012 będzie rozwiązać kilka problemów i TFS 2012 będzie bliżej do SVN, ale to nie będzie DVCS.MS inwestują w integrację z zewnętrzną DVCS - proszę, witamy - Git-TF.

+0

To spowodowałoby więcej kłopotów niż to, co obecnie mam.Obecnie moja praca polega na jawnym sprawdzeniu pliku przed zapisaniem.Znasz o prostszym rozwiązaniu przy zachowaniu ustawienia * onedit = donothing *? –

+1

Uważam, że nowy TFS (2012) wykrywa teraz także pliki zmienione poza rozwiązaniem. Widziałem to, ale nie mogę znaleźć żadnych bezpośrednich informacji na ten temat w sieci ... – Raf

+0

@raf To prawda, TFS 2012 ma koncepcję "lokalnych obszarów roboczych" i jest domyślnie włączona. –

1

myślę, że to jest problem

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.

Aby uniknąć powyższego problemu, powrócić do ustawień domyślnych. Następnie pobierz narzędzia elektronarzędzi TFS. Następnie użyj tego polecenia, aby cofnąć zmiany, które są wypisane, lecz nie zawierają edytuje

tfpt uu /noget 

Update: Na zmieniając ustawienie powyżej problem już nie występuje. Aby uzyskać szczegółowe informacje, przejrzyj poniżej dyskusję w komentarzach.

+0

Łatwiej mi jest po prostu sprawdzić plik zasobów, kiedy go edytuję. Zwróć uwagę, że obecne ustawienia są celowe i nie można ich odwrócić. –

+0

@flem nie jest powyżej ustawienia na poziomie po stronie klienta VS, a nie po stronie serwera TFS? Czy po stronie klienta możesz to zmienić i sprawdzić, czy to działa? – Ankush

+0

Ankush. Chcę tego. Poza tym nie chcę uruchamiać komend tfpt za każdym razem, gdy się odprawiam. Łatwiej mi jest jawnie sprawdzić ten konkretny plik. –

1

Dlaczego chcesz zmniejszyć liczbę nieedytowanych kas? Jeśli plik zostanie wprowadzony bez zmian, informacje o systemie TFS nie będą wyświetlane w historii sprawdzania pliku.

Możesz to sprawdzić samodzielnie, sprawdzając pojedynczy plik i od razu odprawiając. TFS powie Ci, gdzie nie wprowadzono żadnych zmian, a kasowanie zostało anulowane.

enter image description here

Więc może rozważyć wprowadzenie go z powrotem do kasy na edycji? Jak wspomniano w drugiej odpowiedzi, rozwiąże to Twoje problemy ...

+0

Dzięki, ale to nie jest opcja. Chcę wyłączyć płatność przy edycji. –

Powiązane problemy