2013-06-12 12 views
6

Mam wiele projektów studyjnych, które są dostarczane do klienta za pomocą instalatora. Po zakończeniu instalacji wszystkie pliki projektu i rozwiązania powinny być w najnowszej wersji programu visual studio. Czy istnieje sposób na konwersję wielu projektów szybko?Programowo programowo aktualizuje pliki wizualne i pliki projektów Studio

Próbowałem następujące:

1) parsowania plików i zastępując różne właściwości jak ToolsVersion itp Jest szybki, ale nie są wiarygodne i powinny być zmienione dla każdego nowego Visual Studio, która wchodzi na rynek (rocznie od teraz AFAIK)

2) za pomocą devenv uaktualnienia cechą, niezawodne, lecz bardzo powoli:

string[] files = Directory.GetFiles(@"c:\MyTmp", "*.sln", SearchOption.AllDirectories); 
foreach (string file in files) 
{ 
    Process process = new Process(); 
    process.StartInfo.FileName = pathToTheLatestVS; 
    process.StartInfo.Arguments = "/Upgrade \"" + file + "\""; 
    process.Start(); 
    process.WaitForExit(); 
} 

3) próba utworzenia ukrytego wystąpienie VS i manipulowania rozwiązania z tam opisane here, ale bez powodzenia.

Czy istnieje możliwość aktualizacji wielu plików projektów/rozwiązań do konkretnej wersji programu Visual Studio w szybki i niezawodny sposób?

+1

Można użyć kombinacji dwóch opcji. Przygotuj pliki projektu dla istniejących wersji Visual Studio z wyprzedzeniem i zainstaluj już przygotowane pliki. W przyszłych wersjach możesz użyć drugiej metody. –

+0

@AlexButenko to nie jest opcja, ponieważ jest wiele projektów, które się zmieniają i wspieramy klientów VS 2005, więc musimy utrzymywać 5 razy więcej plików projektu. Moja druga metoda jest niedopuszczalnie powolna. – VladL

+0

Wydaje mi się, że powinna to być opcja, ponieważ zasadniczo wszystko, co robisz, dotyczy problemu z kontrolą źródła. Wystarczy połączyć instalację klienta z pewną wersją kontrolera źródłowego/produkcyjnego, a następnie pobrać z niego powiązane rozwiązanie i pliki projektu. – rism

Odpowiedz

2

Pozwól, że przedstawię Wam inny pogląd niż przedstawiony przeze mnie 2. Fakt, że aktualizacja jest powolna, polega na przeprowadzaniu wszelkiego rodzaju kontroli projektów/rozwiązań, które próbujesz zaktualizować. Generowany jest "Raport uaktualnień", aby przekazać informację zwrotną na temat tych kontroli. Jest to informacja, której nie należy lekceważyć, ponieważ zapewnia środki zaradcze w przypadku wymienionych problemów.

Podajesz, że wdrażasz projekty/rozwiązania za pośrednictwem instalatora. Zakładając, że dysponujesz zespołem/narzędziami programistycznymi, które są aktualne, możesz wykonać aktualizacje w ramach projektu/rozwoju instalatora. Dlaczego nie miałbyś wykonać aktualizacji samodzielnie i dołączyć pliki projektu do swojego instalatora. Podczas instalacji należy zainstalować wersję plików projektów/rozwiązań pasujących do platformy docelowej.

+0

Tak, i wykonaj konwersję w swoim piśmie Continuous Integration z dnia na dzień. Oczywiście będziesz potrzebował maszyny ze wszystkimi zainstalowanymi wersjami Studio, więc będzie to początkowy wysiłek. Pozwala to przejrzeć raporty o uaktualnieniu, np. każdego ranka po stronie firmy, zanim zawiedzie po stronie klienta. –

+0

Jak napisałem w komentarzu, nie chcemy przechowywać i utrzymywać 5x więcej plików niż mamy. I co roku będzie jeszcze jeden z powodu nowego Visual Studio. Nasze projekty są bardzo proste (programowanie próbek dla naszej architektury) i nic nie może pójść źle podczas konwersji, więc nie potrzebujemy raportu o aktualizacji. Jedyne, co chcę osiągnąć, to to, że klient kliknie dwukrotnie na plik rozwiązania, a próbka zostanie otwarta w najnowocześniejszym zainstalowanym VS. – VladL

+0

Wspomniał Pan, że druga opcja była niedopuszczalnie powolna. Nie mam pojęcia na temat liczby projektów w porównaniu do liczby rozwiązań, ale jeśli masz 1 rozwiązanie obejmujące wszystkie projekty, a następnie po prostu przekonwertujesz to 1 rozwiązanie, czy wydajność jest nadal niedopuszczalna?W takim przypadku możesz po prostu pozwolić klientowi odebrać karę za uaktualnienie dokładnie na czas, gdy faktycznie otworzy projekt. –

Powiązane problemy