2012-05-25 31 views
5

Muszę wykonać ten sam program dla dwóch różnych firm (inne logo, inna nazwa). Chciałbym to zrobić automatycznie, gdy robię wersję.Skompiluj dwie wersje programu C# automatycznie

Zastanawiam się, czy użyć pliku zasobów lub zestawu satelitów, ale nie jestem pewien, jak postępować.

Który sposób jest według Ciebie najlepszy?

Dzięki.

EDIT:

  • Różnice są tylko jedno zdjęcie i jeden ciąg.
  • Chciałbym mieć wszystko wygenerowane za pomocą jednego kliknięcia.
  • W przyszłości możemy uzyskać więcej klientów w .
  • Muszę również dodać, że używam SmartAssembly do łączenia wszystkich moich zależności w jeden plik exe.
+0

Zależy dokładnie od tego, co jest wymagane, czy jest to tylko tekstowe (i zewnętrzne) zasoby marki lub ...? Gdy tylko X chce funkcji Y lub logiki biznesowej Z ... –

+0

Witam, to jest mieszane zasoby, jeden obraz i jeden ciąg. Czy masz jakies pomysły? – John

+0

Potencjał dla większej liczby klientów krzyczy o modularności. Po to powstały biblioteki dll. –

Odpowiedz

1

Najlepsze, co mogę zrobić, to skrypt wsadowy.

Pobierz projekt do plików referencyjnych (obrazy (logo), tekst (nazwa firmy) itp.). tj. C: \ MyProject \ Resources. Tak więc, gdy projekt buduje, jest zgodny z aplikacją/instalatorem, itp.

W ten sposób można napisać skrypt (plik .bat), który kopiuje zasoby niezbędne dla każdej firmy.

Krok 1 - Usuń wszystkie pliki w folderze Resources

Krok 2 - Użyj MSBuild.exe zbudować projekcji

Krok 3 - Skopiuj pliki potrzebne z folderu bin/uwalniania do katalogu (to znaczyC: \ Release \ CompanyA)

Krok 4 - Zmień zmienne w skrypcie, aby załadować szczegóły dotyczące następnej firmy. I powtórz od kroku 1, aby skopiować potrzebne pliki zasobów i odbudować je.

+1

Dziękuję za odpowiedź. Nie pomyślałem o tym, może to być rzeczywiście najlepsze rozwiązanie. – John

+1

Jest to proste rozwiązanie (wcale nie eleganckie), ale jeśli robisz coraz więcej firm, radzę wybrać inne rozwiązania, takie jak używanie bibliotek DLL jako modułów. Lub jeśli masz więcej dostosowań, rozważ użycie czegoś takiego jak Git/SVN i rozgrupuj projekt. Następnie zautomatyzuj kasę i zbuduj używając narzędzi takich jak TeamCity – JonWillis

+0

W końcu zrobiłem partię i jestem przy użyciu warunkowego symbolu kompilacji, aby uzyskać prawidłowy plik zasobów. – John

2

Łańcuch zasobów w osobnym zestawie byłby najłatwiejszy.

Ale szczerze mówiąc, chciałbym, aby była to funkcja dostosowywania. Ostatnią rzeczą, której chcesz, jest utrzymanie logo każdego użytkownika z powodu: przyczyn prawnych, spraw związanych z copywrite, kapryśnej licencji artystycznej itp.

To jest skrót od ... oznaczać, że mają one sformatowany obraz i przypisać je nazwa firmy podczas instalacji i zapisuj ją w rejestrze lub w pliku meta określonego typu (XML, manifest, itp.)

+0

Dzięki za odpowiedź. Jak mogę mieć 2 wersje osobnego zestawu w jednym projekcie VS? – John

+0

@Abatonime Kompilujesz je do różnych folderów. –

4

Można utworzyć bibliotekę klas zawierającą 99% kodu, a następnie dwa projekty które odnoszą się do wspólnej biblioteki z 1%, który różni się dla każdej firmy. Następnie kompilacja całego rozwiązania wygeneruje plik wykonywalny dla każdej firmy. Użyj tego, jeśli różnice między wymaganiami każdej firmy są wystarczające, abyś musiał mieć [nieco] inny kod.

Można również utworzyć sekcje zależne od danych, a nie od kodu. W takim przypadku może to oznaczać pobranie logo z pliku, a nie osadzenie go w pliku wykonywalnym, a także posiadanie konfiguracyjnego pliku xml z nazwą firmy. To pozwoli ci mieć tylko jeden plik wykonywalny dla obu firm.

+0

??? Przypuszczam, że jego firma nigdy nie będzie mieć więcej niż 2 klientów. –

+3

@Xaade Czy przestałeś czytać po pierwszym akapicie? Istnieją również konkretne projekty, które mogą mieć tylko dwóch klientów lub, co bardziej prawdopodobne, jedną dla "wszystkich" i jedną dla firmy, która zapłaciła za dodanie niestandardowej funkcji tylko dla nich. – Servy

+0

Tak, pierwsza bolała mnie w oczach. –

Powiązane problemy