想出了一个办法:
改变你的web.config
将连接字符串作为外部文件包含在内。
<connectionStrings configSource="web.connectionstrings.config"/>
然后添加一个新文件web.connectionstrings.config
它应该完全采用这种格式(我的意思是不需要更高级别的节点):
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=localhost; Initial Catalog=DEFAULT; Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
愚蠢的发布工具不够聪明 https://msdn.microsoft.com/en-us/library/ff398069(v=vs.110).aspx看看这里。
避免在 .pubxml 文件中编辑与数据库相关的设置,因为
Visual Studio 在发现更改时会自动更改这些
项目。
现在,如果您确实想要部署一些连接字符串,而有些则不想部署,那么那就是另一回事了,您必须找到其他方法来将它们合并。
我可能会补充说,如果您首先遇到这个问题,您可能会做错误的部署,但这对我来说是一个解决方案,因为我确实希望部署硬编码值。
虽然没有直接解决这个问题 - 感谢@scotthanselman,他通过考虑以下内容启发了这个答案本文中的秘密连接字符串 https://www.hanselman.com/blog/BestPracticesForPrivateConfigDataAndConnectionStringsInConfigurationInASPNETAndAzure.aspx.
美丽的!
另外,取消选中此项。我不了解你的情况,但想到 pubxml 将任何内容部署到我的数据库都让我感到害怕!