Публикация одним щелчком мыши по сравнению с 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-публикации добавит их в любое время, когда я отредактирую настройки публикации.
Ответы
Ответ 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
На вкладке "Параметры" в профиле публикации снимите флажок Использовать эту строку подключения во время выполнения и установите флажок Применить код первой миграции. Убедитесь, что миграция включена, или поле Использовать эту строку связи не будет очищено, и даже тогда вам может потребоваться очистить его каждый раз при открытии профиля.