2013-05-01 15 views
30

Próbuję mieć moją kompilację TFS utworzyć transformację web.config związane z konfiguracją wybraną dla mojej kompilacji. Po uruchomieniu kompilacji sprawdzam plik web.config, nie zostały zastosowane transformacje. Kiedy wydaję z VS2012 transformacja działa poprawnie.TFS 2012 i web.config przekształca

Skonfigurowałem program TFS 2012 (aktualizacja 2) i mam osobny serwer dla kompilacji. Nie mam zainstalowanego VS2012 na serwerze kompilacji, ale skopiowałem foldery i pliki C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web i WebApplications z mojego komputera na serwer kompilacji.

Utworzyłem kilka konfiguracji w moim projekcie i dodałem kilka transformacji do powiązanej sieci. {Configname} .config.

Utworzyłem kompilację i ustawiłem elementy do zbudowania - Konfiguracje do kompilacji do jednej z konfiguracji w moim projekcie. Zauważyłem, że ma tylko Debug and Release, nie ma żadnej z konfiguracji, które stworzyłem. (Pytanie boczne: czy to jest poprawne, czy też powinno pokazywać wszystkie utworzone przeze mnie konfiguracje?)

Tak więc uruchamiam kompilację i sprawdzam folder wyjściowy, a web.config nie zastosował transformacji. Czy jest coś jeszcze, co muszę zrobić?

Odpowiedz

2

Możesz wpisać nazwę konfiguracji na liście "Elementy do kompilacji- Konfiguracje do kompilacji".

Jeśli to nie pomoże, spróbuj dodać następujące MSBuild argumentu:/p: TransformConfigFiles = true (3. Zaawansowane -> Argumenty msbuild)

37

tylko rzucanie/p: TransformConfigFiles = true nie będzie właściwie robię wszystko.

Trzeba również dodać ten cel do pliku projektu:

<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'"> 
    <ItemGroup> 
     <DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" /> 
    </ItemGroup> 
    <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" /> 
    <Delete Files="@(DeleteAfterBuild)" /> 
</Target> 

To jest moje źródło: http://blog.degree.no/2012/03/automatic-config-transformations/

+0

działa na mnie! I kudos, tutaj próbka kodu nawet naprawia literówkę z tego posta na blogu (który opuszcza \ out w dwóch miejscach). – Abacus

+1

Po dodaniu tych linii do pliku csproj podczas kompilacji wystąpił błąd: "Nie znaleziono zadania" TransformXml ". Jeśli ktoś będzie miał to samo, możesz dodać to przed tym celem: Vitalii

+0

Świetnie, to działało dla mnie (VS2015, TFS2015)! Wielkie dzięki! Jednak jest bardzo dziwne, że samo określenie konfiguracji kompilacji nie wystarcza ... MS czasami robi dziwne implementacje ... – Vladislav

1

prawym przyciskiem myszy plik rozwiązania, przejdź do właściwości, kliknij właściwości konfiguracyjnych, a następnie kliknij przycisk Konfiguracja Manager na górze. Upewnij się, że konfiguracja dla innego środowiska jest ustawiona prawidłowo. jeśli nie jest ustawiony prawidłowo, ustaw go prawidłowo i sprawdź kod. Teraz przejdź do szablonu kompilacji i sprawdź konfigurację, aby utworzyć właściwość na karcie procesu, aby móc zobaczyć różne konfiguracje. jeśli konfiguracja jest już ustawiona poprawnie, możesz również dodać nową nazwę konfiguracji, wpisując ją we właściwości budowania.

Uwaga: możesz także kliknąć prawym przyciskiem myszy plik transformacji web.config i wybrać transformację podglądu i upewnić się, że konfiguracja przekształceń działa poprawnie.

można również podać nazwę profilu publikowania, czy działa prawidłowo int on msbuild sekcja argumenty

/p:DebugSymbols=false;DebugType=None;DeployOnBuild=true;PublishProfile=Stage