【问题标题】:One-click publish in vs 2012: how to remove _ConnectionStringsToInsert?vs 2012中的一键发布:如何删除_ConnectionStringsToInsert?
【发布时间】:2012-06-06 08:02:16
【问题描述】:

我通常将我的连接字符串放在一个单独的文件中,在 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>

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

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

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

【问题讨论】:

  • 对不起,您遇到了这个问题,我们已经为此提交了一个错误,并将尝试解决这个问题。
  • @SayedIbrahimHashimi 你知道这个错误是否已经解决了吗?我遇到了这个问题。

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


【解决方案1】:

我突然解决了这个问题,方法是转到项目属性“打包/发布 Web”并选中“包括在 P/P SQL 选项卡中配置的所有数据库”标记(我没有在那里配置任何数据库 :))。

执行此操作并从 .pubxml 中删除上述行后一切正常。

看起来像个 hack,但这对我来说是一种方法:)

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

【讨论】:

  • 这个修复似乎并没有让这些线条远离。每当您转到“发布”对话框中的连接字符串配置页面时,它们仍会返回。
【解决方案2】:

我想出了一个(可能)不那么棘手的解决方案来绕过发布中的错误,该错误会强制发现实体框架代码的第一个数据库上下文具有连接字符串。这仍然是我在 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 中的发布转换运行之后运行,因此它会清除不需要的连接字符串。

【讨论】:

  • 如果您没有根据 tdykstra 的回答启用迁移,这似乎是唯一的解决方案。如果 Web 部署过程在 web.config 文件中看到它们已经存在,则不会尝试添加连接字符串,并且构建转换会在构建过程中愉快地将它们从 web.config 文件中删除。
  • 这个解决方案也对我有用,我所做的唯一更改是在 Web.Release.config 上,使用这个&lt;connectionStrings xdt:Transform="Remove" /&gt; 删除了所有连接字符串单线。
【解决方案3】:

在发布配置文件的“设置”选项卡上,清除在运行时使用此连接字符串复选框和应用代码优先迁移复选框。确保已启用迁移,否则 使用此连接字符串 框不会保持清除状态,即便如此,您每次打开配置文件时可能都必须再次清除它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多