我是Git的新手,我目前正在将SVN中的项目迁移到Git。它目前的工作方式是服务器上有一个dev目录,服务器上有一个生产目录。开发和生产都有一个单独的数据库,因此在各自的web.config中有不同的连接字符串。我将使用gitflow工作流,所以当变更准备好生产时我将把dev合并到master中,所以我需要让dev分支上的web.config有一个连接字符串并且有一个单独的连接生产分支上的字符串。有没有合乎逻辑的方法呢?
答案 0 :(得分:8)
在asp.net中,您可能需要查看web.config transformation。您的项目中可能已经有web.release.config和web.debug.config。它们可用于切换连接字符串,具体取决于您用于构建应用程序的构建配置(构建,调试等)。
我遇到的另一个想法是将连接字符串包含在一个单独的文件中:
<configuration>
<connectionStrings configSource="connectionStrings.config" />
</configuration>
会导致.NET从connectionStrings.config
文件加载连接字符串。然后在版本控制中忽略该文件,并在本地开发环境中分发dev版本,将暂存版本放在登台服务器上,然后生产版本保持生产。
肯定有更多的解决方案,而不仅仅是这些。但是,在较小的gitflow类型环境中,我对这两个选项都运气不错。
答案 1 :(得分:3)
以下是我将如何做的一个实例......
编辑我的Web.Config文件
注意:名称:DefaultConnection,LocalConnection,livedbsource,localdbsource,localMachineName
<connectionStrings>
<!--Live-->
<add name="DefaultConnection" connectionString="Data Source=livedbsource;Initial Catalog=livedbname;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
<!--Dev-->
<add name="LocalConnection" connectionString="Data Source=localdbsource;Initial Catalog=localdbname;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
对于ApplicationDbContext
static string ServerName = System.Net.Dns.GetHostName();
//setting what connection string to use - tenary operator
static string ConnectionStringID =
(ServerName == "localMachineName") ? "LocalConnection" : "DefaultConnection";
public ApplicationDbContext(): base(ConnectionStringID, throwIfV1Schema: false)
{
}
在Windows 7及更高版本上,您可以按Windows徽标并搜索系统信息获取localMachineName,然后查找“系统名称”
以下是我在Visual Studio 2017中在直播项目中完成的YouTube视频,它运行良好。
答案 2 :(得分:2)
您应该使用Web.config Transformations进行基于部署的配置。他们可以在分支机构之间旅行,因为它们在所有分支上都应该是相同的。
但是对于本地开发,Web.config
,Git Attributes是你应该使用的。
只需在项目的根目录中创建一个.gitattributes
文件(.git/
文件夹所在的位置)并将以下行放在文件中:
Web.config merge=ours
每次将分支与更新的Web.config文件合并时,它都会保留您当前的更改。