2010-06-07 12 views
11

Pracuję nad projektem ASP.NET w programie Visual Studio .NET 2010 i próbuję utworzyć instalator MSI przy użyciu projektu instalacji sieci Web. Dodałem pierwotne dane wyjściowe z projektu (które wydają się przyciągać odpowiednie zależności) oraz pliki zawartości z projektu (które pobierają pliki Web.config i .svc).Transformacja programu ASP.NET Web.config nie będzie działać w instalatorze

Problem polega na tym, że zamiast zastosować transformację XDT i utworzyć plik Web.config za pomocą pliku Web.Release.config, wystarczy skopiować pliki Web.config, Web.Release.config i Web.Debug.config do instalatora bez jakiejkolwiek transformacji.

W jaki sposób uzyskać go do zastosowania transformacji Web.config przed utworzeniem instalatora?

Odpowiedz

1

Odpowiedź zakończony został położony na innym stanowisku SO którego brakowało, kiedy przeszukując przed pytaniem, ponieważ nie było dokładnie to, co chciałem:

MSBuild Script and VS2010 publish apply Web.config Transform

Współpracownik zasugerował, że za pomocą umieszczenie przekształconego pliku Web.config w katalogu projektu bin i projektu konfiguracji sieci Web skonfigurowanego do pobierania pliku Web.config z katalogu bin i umieszczania go w instalatorze. Stało się to najbardziej funkcjonalnym rozwiązaniem bez instalowania jakichkolwiek dodatków w Visual Studio.

0

Musisz wykonać projekt wdrożenia (uważam, że jest to osobny plik do pobrania), a następnie projekt instalacji sieci Web bierze prekompilowane dane wyjściowe projektu wdrażania podczas jego wprowadzania. Jedną z fajnych rzeczy jest to, że możesz zmienić sekcję twojego Web.config podczas kompilacji.

+1

To może być odpowiedź; jednak nie mam uprawnień administratora (ponieważ jest to komputer roboczy), więc nie mogę go przetestować, aby się upewnić. \ Skończyło się na dodaniu wpisu do pliku .csproj w celu przeprowadzenia transformacji - ja opublikuj wkrótce szczegóły. –

17

znalazłem workaround, który pracuje dla mnie:

  1. Tworzenie potrzebnych konfiguracje (Dev, QA, produkcja itd.) Oraz związanych z nimi przemian web config.

  2. Użyj Notatnika lub innego edytora tekstu i obejmują następujące w pliku projektu aplikacji internetowej (.csproj plików) przed znacznikiem (pod koniec pliku projektu):

    <Target Name="AfterBuild"> 
        <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" /> 
    </Target> 
    

    Nie obejmują Web.Transformed .config w projekcie aplikacji internetowej - jeśli zrobisz visual studio powiadomisz o zmianach po każdym kompilacji, co jest dość denerwujące.

  3. W projekcie konfiguracji sieci: wybierz Pliki zawartości -> Wyklucz filtr i dodaj plik Web.config (i wszystkie inne pliki konfiguracyjne Web. *. Config zawierające reguły transformacji).

  4. W projekcie instalacji internetowej: wybierz edytor ikon system plików -> Folder aplikacji internetowych -> Dodaj plik i wybierz Web.Transformed.config w głównym katalogu projektu aplikacji internetowych.

  5. W tym samym ekranie: kliknij prawym Web.Transformed.config i zmień jego nazwę na Web.config

Teraz jesteś w stanie wygenerować msi pliki z wybranej konfiguracji i głównego pliku web.config jest przekształcone! Należy pamiętać, że nie ma to wpływu na pliki web.config w podfolderach.

+0

Mogę potwierdzić, że ta metoda działa. Jest również szczegółowo na końcu tego postu: http://forums.asp.net/p/1596387/4050004.aspx –

+0

+1 Pracował przyjemność! –

+0

W punkcie 2 radzimy nie dodawać pliku Web.Transformed.config, ale w punkcie 4 prosimy o dodanie pliku Web.Transformed.config. Oba punkty są ze sobą sprzeczne, albo coś mi brakuje. Czy ktoś może mi pomóc w zrozumieniu tych kroków w szczegółach. –

Powiązane problemy