Подтвердить что ты не робот

Публикация одним щелчком мыши по сравнению с 2012 годом: как удалить _ConnectionStringsToInsert?

Я обычно добавляю строку подключения в отдельный файл, добавляя что-то вроде этого в web.config:

<connectionStrings configSource="WebConnection.config" />

Я только что установил VS 2012, и он автоматически подобрал мои существующие настройки публикации. Однако, когда я делаю webpublish, он теперь добавляет две строки соединений сам по себе, поэтому мой web.config в целевом развертывании теперь выглядит следующим образом:

  <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>

конечно, что создает ошибку (node содержимое должно быть пустым при использовании configSource). Я заметил, что в недавно созданных файлах .pubxml(где теперь сохраняются настройки публикации) имеются следующие строки:

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

Как я могу их удалить?:) Если я удалю их из файла, диалог Web-публикации добавит их в любое время, когда я отредактирую настройки публикации.

4b9b3361

Ответ 1

Я вдруг решил, что, перейдя к свойствам проекта, "Пакет/Публикация Web" и проверив отметку "Включить все базы данных, настроенные на вкладке SQL P/P" (и у меня нет какой-либо БД, настроенной там:)).

После этого и удаления указанных строк из .pubxml все пошло нормально.

Кажется, что это взломать, но это был способ пойти ко мне:)

@Sayed, спасибо, что подтвердили ошибку, надеемся, что это будет разрешено!

Ответ 2

Я придумал (возможно) менее хакерское решение для обхода ошибки в публикации, которая заставила сущность Entity Framework сначала контексты db иметь строку соединения. Это все еще проблема, которую я испытываю в VS 2013.

В вашем web.config добавьте фиктивную версию строки подключения:

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

Теперь настройте преобразование для конфигурации, для которой вы хотите создать пакет публикации. Подробнее об этом здесь.

В вашем файле web.config. {configuration} используйте следующее преобразование для удаления строки подключения:

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

Этот преобразование выполняется ПОСЛЕ трансформации публикации в ваших запусках pubxml, поэтому он очищает строку нежелательного подключения.

Ответ 3

На вкладке "Параметры" в профиле публикации снимите флажок Использовать эту строку подключения во время выполнения и установите флажок Применить код первой миграции. Убедитесь, что миграция включена, или поле Использовать эту строку связи не будет очищено, и даже тогда вам может потребоваться очистить его каждый раз при открытии профиля.