是否可以将 Web.config 转换与发布配置文件链接起来?

发布于 2024-09-07 03:46:21 字数 358 浏览 8 评论 0原文

目前,我可以根据构建配置轻松设置 Web.config 转换,例如使用 connectionString=server;.. 进行 DebugconnectionString=./SQLExpress;.. 表示发布

但是是否可以根据Web发布配置文件进行一些Web.config转换?即使用 connectionString=server1;.. 作为配置文件 Server1 并使用 connectionString=server2;.. 作为 Server2

Currently I can easily setup Web.config transform based on build configuration, e.g. use connectionString=server;.. for Debug and connectionString=./SQLExpress;.. for Release.

But is it possible to do some Web.config transformation basing on web publish profile? I.e. use connectionString=server1;.. for profile Server1 and connectionString=server2;.. for Server2 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

楠木可依 2024-09-14 03:46:21

我们将所有机器/配置文件特定的配置保存在单独的配置文件中,然后使用 configSource 来包含它们,就像这样......

    <connectionStrings configSource="cstrings.config"/>

这样 Web.config 是相同的,不需要任何转换。我们对连接字符串、smtp 设置和应用程序设置执行此操作。

我们对 Web.config 和“机器特定”文件(例如 cstrings.config.product、cstrings.config.staging 等)进行版本控制。

一旦拥有此结构,就可以轻松为不同的配置文件生成图像。我们在每台计算机上都有部署脚本,用于读取环境变量并进行适当的部署。例如,登台服务器构建脚本将 cstrings.config.staging 复制到 cstrings.config 等。

We keep all machine/profile specific configuration in separate config files, then use configSource to include them like so...

    <connectionStrings configSource="cstrings.config"/>

This way Web.config is the same and doesn't require any transformations. We do this for connection strings, smtp settings and app settings.

We version control Web.config and "machine specific" files such as cstrings.config.production, cstrings.config.staging, etc.

Once you have this structure it's easy to generate images for different profiles. We have deployment scripts on each machine that read an environment variable and deploy appropriately. For example, the staging server build script copies cstrings.config.staging to cstrings.config, etc.

旧人哭 2024-09-14 03:46:21

可能有一种稍微不同的方法来做到这一点。

在生产服务器上,在每台生产计算机上的 c:\windows\system32\drivers\etc\hosts 文件中为 customdb 创建一个虚拟条目。每个都指向您希望该计算机使用的数据库。那么你只需要指向connectionString=customdb;适用于您的所有生产服务器。

唯一的缺点是您需要访问主机文件,并且需要使用数据库。

希望这有帮助

There could be a slightly different way to do this.

On your production servers create a dummy entry, for customdb, in the c:\windows\system32\drivers\etc\hosts file on each of the production machines. Each one pointing to the database that you want that machine to use. Then you only have to point to the connectionString=customdb; for all your production servers.

Only downside of this would be that you would need access to the hosts file and it would require you to use a db.

Hope this helps

薔薇婲 2024-09-14 03:46:21

我相信发布配置文件独立于构建配置文件,这有点遗憾,因为您很容易意外地将调试配置部署到生产服务器。

但是,如果您使用 MSDeploy,则可以通过多种方法修改其中的 web.config。请参阅 MSDeploy - 部署包后更改连接字符串参数了解更多详细信息。

I believe that the publishing profiles are independent of the build profiles, which is a bit of a shame, as you could easily accidentally deploy a debug configuration to your production servers.

However, if you're using MSDeploy, there are ways to modify the web.config in there. See MSDeploy - Changing Connection string parameter after deploying the package for more details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文