在vs 2012中一键发布:如何删除_ConnectionStringsToInsert?

时间:2012-06-06 08:02:16

标签: msdeploy webdeploy visual-studio-2012 one-click-web-publishing

我通常把我的连接字符串放到一个单独的文件中,在web.config中添加类似的东西:

<connectionStrings configSource="WebConnection.config" />

我刚刚安装了VS 2012,它会自动获取我现有的发布设置。 但是,当我进行网络发布时,它现在自己添加了两个连接字符串,因此部署目标上的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>

当然,这会产生错误(使用configSource时节点内容必须为空)。 我注意到,在新生成的.pubxml文件(现在存储发布设置)中有以下几行:

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

如何删除它们? :)如果我从文件中删除它们,Web-publish对话框会在我编辑发布设置时随时添加它们。

3 个答案:

答案 0 :(得分:6)

我突然决定通过转到项目属性,“打包/发布Web”并选中“包含在P / P SQL选项卡中配置的所有数据库”标记(并且我没有配置任何数据库:))。

执行此操作并从.pubxml中删除上述行后,一切都很顺利。

看起来像一个黑客,但它是一种方式去找我:)。

@Sayed,感谢您确认这是一个错误,希望它能够得到解决!

答案 1 :(得分:4)

我提出了一个(可能)不那么糟糕的解决方案来绕过发布中的错误,强制发现实体框架代码第一个db上下文有一个连接字符串。这仍然是我在VS 2013中遇到的一个问题。

在您的web.config中,添加连接字符串的虚拟版本:

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

现在,为要为其创建发布包的配置设置转换。阅读更多相关信息here

在您的web.config。{configuration}文件中,使用以下转换删除连接字符串:

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

此变换在pubxml中的发布转换运行后运行,因此它会清除不需要的连接字符串。

答案 2 :(得分:1)

在发布配置文件的“设置”标签上,清除在运行时使用此连接字符串复选框和应用首次迁移代码复选框。确保已启用迁移,或者使用此连接字符串框不会保持清除状态,即使这样,您每次打开配置文件时也可能需要再次清除它。