我需要在ASP.NET應用程序中使用不同的數據庫連接字符串和SMTP服務器地址,具體取決於它是在開發環境還是生產環境中運行。在開發和生產環境中使用不同的Web.config
該應用程序通過WebConfigurationManager.AppSettings屬性從Web.config文件讀取設置。
我使用Build/Publish命令通過FTP將應用程序部署到生產服務器,然後用正確的手動替換遠程Web.config。
是否有可能以某種方式簡化部署過程?謝謝!
我需要在ASP.NET應用程序中使用不同的數據庫連接字符串和SMTP服務器地址,具體取決於它是在開發環境還是生產環境中運行。在開發和生產環境中使用不同的Web.config
該應用程序通過WebConfigurationManager.AppSettings屬性從Web.config文件讀取設置。
我使用Build/Publish命令通過FTP將應用程序部署到生產服務器,然後用正確的手動替換遠程Web.config。
是否有可能以某種方式簡化部署過程?謝謝!
重新啓動在Visual Studio 2010及以上,您現在可以根據構建配置將轉換應用於web.config。
當創建一個web.config,可以擴大在Solution Explorer中的文件,你會看到兩個文件:
它們包含了可以用來
請參閱MSDN上Web.config Transformation Syntax for Web Application Project Deployment以獲取更多信息。
儘管官方不支持,也可以將相同類型的轉換應用於非web應用程序文件。有關如何修改項目文件以將新任務添加到msbuild,請參閱Phil Bolduc blog。
這是一個長期承受request on the Visual Studio Uservoice。
extension for Visual Studio 2010及以上,「SlowCheetah」可用於爲任何配置文件創建轉換。從Visual Studio 2017.3開始,SlowCheetah has been integrated into the IDE和代碼庫由Microsoft管理。這個新版本也支持JSON轉換。
你看過web部署項目嗎?
沒有爲VS2005版本爲好,如果你不是在2008年
我想知道,太。這有助於隔離問題對我來說
<connectionStrings configSource="connectionStrings.config"/>
然後我保持connectionStrings.config以及一個「(東道國)connectionStrings.config」。這仍然是一個問題,但是如果您針對兩種環境中不同的部分執行此操作,則可以部署和版本相同的web.config。
(我不使用VS,順便說一句)
如果你使用VS,你可以使用prebuild-events從debug.connectionstrings.config或a release.connectionstrings.config like: copy $(ProjectDir)$(ConfigurationName)ConnectionStrings.config $(ProjectDir)ConnectionStrings.config as s被Scott收購。 Hanselmann: http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx – Thomas 2010-01-04 13:42:37
企業庫配置編輯器可以幫助你做到這一點。它允許你創建一個基本配置文件,然後爲每個環境增量。然後,您可以合併基本配置和增量以創建特定於環境的web.config。看一下here的信息,它會比你更好地理解它。
您也可以將其設置爲構建後步驟。除Debug和Release之外,還要設置一個「Deploy」的新配置,然後在正確的web.config中進行生成後步驟拷貝。
我們對我們所有的項目都使用自動構建,並且構建腳本更新web.config文件以指向正確的位置。但是,如果你正在做VS中的所有事情,那不會對你有所幫助。
我使用NAnt構建腳本部署到我的不同環境。我已經通過XPath修改了我的配置文件,具體取決於它們被部署到的位置,然後使用Beyond Compare自動將它們放入該環境。
需要一兩分鐘的時間來設置,但您只需要一次。然後批量文件接管,而我去喝另一杯咖啡。 :)
Here's我發現它的一篇文章。
這是使用machine.config的巨大好處之一。在我上一份工作中,我們有開發,測試和生產環境。我們可以將machine.config用於連接字符串(適當的,dev/test/prod SQL機器)。
如果您無法訪問實際的生產機器(例如,如果您在共享主機上使用託管公司),這可能不是您的解決方案。
在我們有4個環境(開發,測試,分期和生產)的一個項目中,我們開發了一個系統,其中應用程序根據部署的計算機名稱選擇適當的配置。
這個工作對我們,因爲:
在這種情況下它對我們很有效,但可能無處不在。
web.config中的<appSettings>
標籤支持一個文件屬性,該屬性將使用它自己的一組鍵/值來加載外部配置。這些將覆蓋您在web.config中的任何設置或添加到它們。
我們通過在安裝時修改我們的web.config,並使用與要安裝網站的環境相匹配的文件屬性來利用此優勢。我們通過安裝程序上的開關完成此操作。
例如;
<appSettings file=".\EnvironmentSpecificConfigurations\dev.config">
<appSettings file=".\EnvironmentSpecificConfigurations\qa.config">
<appSettings file=".\EnvironmentSpecificConfigurations\production.config">
注:
這是一個很好的使用web部署項目的指南:http://johnnycoder.com/blog/2010/01/07/deploy-aspnet-web-applications-with-web-deployment-projects/ – 2010-03-28 22:23:20
2005版在這裏http://msdn.microsoft.com/en-us/library/aa479568.aspx – Fandango68 2014-02-24 00:41:43
Web部署項目似乎是VS「發佈配置文件」現在http://www.diaryofaninja.com/blog/2012/08/ 26/visual-studio-2012-web-deployment-projects-are-dead-ndash-long-live-publishing-profiles – jocull 2015-09-30 04:09:25