One-click publish in vs 2012: how to remove _ConnectionStringsToInsert?

穿精又带淫゛_ 提交于 2019-11-29 17:41:09

问题


I usually put my connection string to a separate file, adding something like this in web.config:

<connectionStrings configSource="WebConnection.config" />

I've just installed VS 2012 and it automatically picked up my existing publish settings. However, when I do a webpublish it now adds two connections strings by itself, so my web.config on the deployment target now looks like that:

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

certainly, that produces an error (node contents must be empty when using configSource). I noticed, that in newly generated .pubxml files (where publish settings are now stored) there are following lines:

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

How can I remove them? :) If I delete them from file, Web-publish dialog adds them anytime I edit the publish settings.


回答1:


I suddenly resolved that by going to project properties, "Package/Publish Web" and checking the mark "Include all databases configured in P/P SQL tab" (and I don't have any DB configured there :)).

After doing this and deleting the mentioned lines from .pubxml everything went fine.

Seems like a hack, but it was a way to go for me :)

@Sayed, thanks for confirming it's a bug, hope it'll be resolved!




回答2:


I came up with a (possibly) less hacky solution for bypassing the bug in publish that forces discovered Entity Framework code first db contexts to have a connection string. This is still an issue that I'm having in VS 2013.

In your web.config, add a dummy version of the connection string:

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

Now, setup a transform for the configuration you want to create a publish package for. Read more about it here.

In your web.config.{configuration} file, use the following transform to remove the connection string:

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

This transform runs AFTER the publish transform in your pubxml runs, so it clears out the unwanted connection string.




回答3:


On the Settings tab of the publish profile, clear the Use this connection string at runtime check box and the Apply Code First migrations check box. Make sure that migrations is enabled, or the Use this connection string box won't stay cleared, and even then you may have to clear it again each time you open the profile.



来源:https://stackoverflow.com/questions/10910336/one-click-publish-in-vs-2012-how-to-remove-connectionstringstoinsert

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!