2009-08-31 17 views
6

Aktualnie pracuję nad projektem ASP.NET z wieloma programistami używającymi Subversion do dystrybucji kodu, ale w tej chwili jest to całkiem szczerze pomieszane. Osoba, która utworzyła repozytorium Subversion, zawiera pliki konfiguracyjne specyficzne dla swojego komputera, katalogów bin \ * i innych podobnych rzeczy.Najlepsze praktyki dotyczące przechowywania witryny sieci Web ASP.NET w Subversion?

Ja, jako gość, który musi sprawdzić to repozytorium i uruchomić go na moim komputerze, jestem bardzo sfrustrowany tym, ponieważ zajęło mi trochę czasu, aby posortować to wszystko, aby skompilować w ogóle. Teraz myślę o napisaniu dokumentu dotyczącego wytycznych Subversion, który wyślę do lidera technicznego w mojej firmie, abyśmy mogli ujednolicić proces i uniknąć tego rodzaju problemów.

Czego szukam, to wprowadzenie do wytycznych. Oto początek dla nich i mam nadzieję, że możemy zrobić z tego coś dobrego:

Struktura plików powinna być skonfigurowana tak, aby biblioteki innych firm były sprawdzane poza katalogami wyjściowymi kompilacji (ponieważ nie będą one dostępne). zawarte w repozytorium.) Nazwa tego katalogu powinna być "Biblioteki".

W Subversion nie należy umieszczać żadnych plików specyficznych dla maszyny. Dlatego sprawdzany jest tylko szablon Web.config, który jest dostosowywany przez programistów do ich maszyny. To zachowanie jest domyślnie zawarte w programie Visual Studio 2010, a poszczególne pliki konfiguracyjne (Web.Local.config) automatycznie stosują szablon (Web.config). Lokalny plik konfiguracyjny nadal nie powinien być uwzględniony w Subversion, o ile dotyczy konkretnego komputera.

Pliki rozwiązania i projektu nie mogą zawierać żadnych ścieżek bezwzględnych.

Należy skonfigurować listę ignorowania. Zacznij od:

' 
*.user 
obj 
' 

przykładu struktury plików na stronie internetowej ASP.NET 2.0 z klasy biblioteki określonej na stronie internetowej oraz biblioteki innych firm:

' 
/trunk/ 
    Libraries/ 
     ThirdParty.dll 
    MyClassLibrary/ 
     bin/ [Ignore] 
     obj/ [Ignore] 
     Properties/ 
      AssemblyInfo.cs 
     SomeClass.cs 
     MyClassLibrary.csproj 
      - Holds references to third-party libraries. For example: 
       ../Libraries/ThirdParty.dll 
    MyWebApplication/ 
     bin/ 
      ThirdParty.dll [Ignore; copied by build process] 
      ThirdParty.dll.refresh 
       - Contains "../Libraries/ThirdParty.dll" 
     Default.aspx 
     Default.aspx.cs 
     Web.config [Ignore] 
     Web.config.template 
    MySolution.sln 
     - Holds list of projects. 
     - Has reference information for projects. 
' 

alternatywa do stosowania Web.config.template zadaniem będzie należy dołączyć plik Local.config z Web.config, ale może to być mniej elastyczne.

Podczas korzystania z projektu aplikacji sieci Web zamiast projektu witryny sieci Web odniesienia będą przechowywane w pliku projektu zamiast w plikach .refresh, więc bin/folder zostanie zignorowany.

Czy ktoś może zobaczyć błędy w powyższych sugestiach? Czy czegoś brakuje? Czy ktoś ma sugestie dotyczące listy ignorowanych? Właśnie zacząłem z kilkoma wpisami na teraz.

Odpowiedz

7

Myślę, że jesteś dobrym krokiem na drodze. Ale dlaczego nie umieścić ignorowania w całym folderze bin w/MyWebApplication zamiast w plikach? Nie dodalibyście swojej wersji do wywrotki, prawda? Zdecydowanie uznałbym to za złą praktykę.

także, jeśli to możliwe, można dodać plik web.config do Subversion, ale w elemencie bazowym nowy plik z AppSettings na przykład:

<appSettings file="local.config"> 

wtedy plik local.config być ignorowane przez svn. Tak zawsze działam.

Oczywiście działa to tylko wtedy, gdy każdy konfigurowalny parametr znajduje się w ustawieniach aplikacji (jeden z powodów, dla których nie podoba mi się model dostawcy, ponieważ wszyscy dostawcy muszą uzyskać ciągi połączeń z elementu connectionString i nie można ich ponownie skonfigurować na wziąć ciąg połączenia z appSettings)

Edycja: troethom oświecił mnie i wskazał, że można również zastąpić ustawienia konfiguracyjne connectionString w oddzielnym pliku

<connectionStrings configSource="ConnectionStrings.config"/>. 

więc rzeczą, którą chciałbym zrobić to pla s aktualny plik web.config pod kontrolą subversion, ale niech inne pliki, które nadpisują ustawienia lokalnie, zostaną zignorowane przez svn.

+0

przez 2,0 internecie zewnętrznych projektów odniesienia montażu są określane przez/bin/samego katalogu , więc potrzebuję (AFAIK) plików .refresh, które znajdują się w katalogu/bin /. Możliwe, że SVN zignoruje bin/*. Dll, więc nie powinno to stanowić problemu. Moim zamiarem było nigdy nie uwzględniać danych wyjściowych kompilacji w SVN, dlatego właśnie te wytyczne mają zapobiegać. Właściwie to napisałem swoje wytyczne, by najpierw zaimportować plik "Local.config", ale ponieważ w pliku konfiguracyjnym jest tak wiele sekcji, pomyślałem, że może lepiej mieć kopię pliku, który może być skonfigurowany przez programistę . – Blixt

+0

Ahhh - Zapomniałem tych projektów 2.0 "strony internetowej" bez pliku projektu. Nigdy ich nie lubiłem. Ale masz wybór (aplikacja internetowa została ponownie wprowadzona do VS2005 SP1). Jeśli utworzysz "stronę internetową", nie masz żadnego pliku projektu, a katalog bin stanie się twoją referencją, lub możesz utworzyć "aplikację internetową", gdzie odniesienia są zdefiniowane przez plik projektu, i możesz wtedy zignorować cały bin teczka. Ale nie mam dużego doświadczenia z umieszczaniem projektu "strony internetowej" w svn. – Pete

+0

Pete, możesz umieścić również ciągi połączeń w oddzielnym pliku konfiguracyjnym (chyba, że ​​nadal używasz .NET 1.1). Po prostu użyj ''. –

1

Powinieneś dodać pliki .refresh; nie prawdziwe pliki DLL.

System projektowy Visual Studio wysyła listę plików, które powinny zostać dodane do kontroli źródła do Dostawców SCC. AnkhSVN jest dostawcą SCSI Subversion, który wykorzystuje te informacje do zasugerowania dodania tych plików (a nie innych plików).

VisualSVN i inni klienci Subversion, którzy patrzą tylko na rozszerzenia plików, nie otrzymują tych informacji z ASP.Net.

(Uwaga: jeśli usuniesz plik .refresh, Visual Studio doda DLL do listy plików, które powinny być popełnione)

+0

Zatem moja sugestia powyżej, aby użyć plików '.refresh' jest zalecanym sposobem dołączania odniesień do bibliotek DLL w folderze' bin' programu ASP.NET? – Blixt

Powiązane problemy