12

I zazwyczaj umieścić mojego ciąg połączenia do osobnego pliku, dodając coś takiego w web.config:Publikowanie jednym kliknięciem w roku 2012: jak usunąć _ConnectionStringsToInsert?

<connectionStrings configSource="WebConnection.config" /> 

Właśnie zainstalowane VS 2012 i automatycznie podniósł moje istniejących ustawień publikowania. Jednak, kiedy zrobić webpublish teraz dodaje dwa połączenia ciągów przez siebie, więc moje web.config na cel wdrażania teraz wygląda tak:

<connectionStrings configSource="WebConnection.config"> 
    <add name="EF.Model.DbContext" connectionString="EF.Model.DbContext_ConnectionString" providerName="System.Data.SqlClient" /> 
    <add name="Migrations.Db.MigrationDb" connectionString="Migrations.Db.MigrationDb_ConnectionString" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

pewno, że produkuje błąd (zawartość węzeł musi być pusty podczas korzystania z configSource). Zauważyłem, że w nowo wygenerowanych plików .pubxml (gdzie publikować ustawienia są teraz przechowywane) istnieją następujące linie:

<ItemGroup> 
    <_ConnectionStringsToInsert Include="EF.Model.DbContext" /> 
    <_ConnectionStringsToInsert Include="Migrations.Db.MigrationDb" /> 
    </ItemGroup> 

Jak mogę je usunąć? :) Jeśli usunę je z pliku, okno publikowania w sieci doda je w dowolnym momencie, edytując ustawienia publikowania.

+0

Przykro nam, że się na to zgubiłeś, zgłosiliśmy do tego błąd i spróbujemy to załatwić. –

+3

@ SayedIbrahimHashimi Czy wiesz, czy ten błąd został kiedykolwiek rozwiązany? Występuję w tym wydaniu. – IanW

Odpowiedz

6

Nagle rozwiązałem ten problem, przechodząc do właściwości projektu, "Package/Publish Web" i zaznaczając znacznik "Uwzględnij wszystkie bazy danych skonfigurowane w zakładce P/P SQL" (i nie mam tam skonfigurowanej bazy danych :)) .

Po wykonaniu tej czynności i usunięciu wymienionych linii z .pubxml wszystko poszło dobrze.

Wygląda hack, ale to była droga dla mnie :)

@Sayed, dzięki za potwierdzeniem jest to błąd, mam nadzieję, że będę rozwiązany!

+4

Ta poprawka nie sprawia, że ​​te linie pozostają z dala. Wciąż powracają za każdym razem, gdy przejdziesz do strony konfiguracji ciągów połączeń w oknie dialogowym Opublikuj. – Brannon

1

Na karcie Ustawienia profilu publikowania, usuń Użyj tego połączenia ciąg pole wyboru Runtime co i pole wyboruZastosuj kod najpierw migracje. Upewnij się, że migracja jest włączona lub pole Użyj tego połączenia nie pozostanie usunięte, a nawet wtedy konieczne będzie wyczyszczenie go ponownie przy każdym otwarciu profilu.

4

Wymyśliłem (być może) mniej hackowate rozwiązanie do ominięcia błędu w publikacji, które wymusza wykrycie kontekstu db pierwszego kodu Entity Framework, aby uzyskać ciąg połączenia. Jest to nadal problem, który mam w VS 2013.

W Twojej web.config, dodać obojętne wersję ciąg połączenia:

<add name="DbContextName" connectionString="This is a dummy connection string to bi-pass publish bug." providerName="System.Data.SqlClient" /> 

Teraz konfiguracja transformacji dla konfiguracji chcesz utworzyć pakiet publikowania dla. Przeczytaj więcej na ten temat here. .

W Twojej web.config {} plik konfiguracyjny, należy użyć następującego przekształcić usunąć ciąg połączenia:

<connectionStrings> 
    <add name="DbContextName" xdt:Transform="Remove" xdt:Locator="Match(name)"/> 
</connectionStrings> 

Ten przekształcenia biegnie za opublikować przetransformować w swoich seriach pubxml, więc czyści niechciane ciąg połączenia.

+0

Jeśli migracja nie jest włączona zgodnie z odpowiedzią od tdykstra, wydaje się, że jest to jedyne rozwiązanie. Proces Web Deploy nie będzie próbował dodawać ciągów połączeń, jeśli zobaczy je już w pliku web.config, a transformacja budowania szczęśliwie usuwa je z pliku web.config podczas procesu budowania. – Clint

+0

To rozwiązanie zadziałało również dla mnie, jedyną zmianą, jaką wprowadziłem, było ** Opóźnienie. Usunięcie wszystkich ciągów połączeń jedno-liniowy. –

Powiązane problemy