如何让VS根据编译环境选择相应的配置文件
其實微軟還是蠻有創造力的,一個配置文件居然弄了這么多的形式,從原來的ini到現在的xml,總而言之讓我們這些在微軟殿堂里的程序員翹著屁股追趕。
微軟最新的配置文件實際上就是個xml文件,以后綴名.config表示,但是在VS中默認只有一個配置文件,app.config或者web.config,有時我們想添加自己命名的配置文件卻感覺很乏力,我這篇博客就是來介紹下如何讓VS能夠按照我們的意愿使用配置文件。
使用情景:我們現在有兩套WCF服務,一個是測試服務,一個是正式服務,我們想讓VS在Debug模式下選擇包含測試服務的配置文件,在Release模式下選擇包含正式服務的配置文件。
這里使用的技術是MSBuild,在VS自帶的MSDN中有詳細闡述,這項技術主要用于定制VS的編譯過程
本篇博客主要參考了文章http://icelava.net/forums/thread/2920.aspx,如果打不開就FQ吧!
首先新建一個WinForm項目,在項目中添加兩個配置文件app.Debug.config和app.Release.config(如果有自帶的App.config,可將其刪除),并在兩個配置文件中添加測試數據
然后打開項目所在文件夾,用文本編輯器打開項目文件,在這里我推薦Notepad++,當然你可以根據個人習慣選擇自己喜歡的編輯器。
注意:千萬不要用寫字板打開,因為寫字板會改變文件的換行符,使程序不能正確加載配置文件
打開文件最后處會看到下面一段注釋的內容,意思很清楚就不用解釋了
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets.<Target Name="BeforeBuild"></Target><Target Name="AfterBuild"></Target>-->修改AfterBuild任務如下:
1 <Target Name="AfterBuild"> 2 <Delete Files="$(TargetDir)$(TargetFileName).config" /> 3 <Copy SourceFiles="$(ProjectDir)\app.$(Configuration).config" 4 DestinationFiles="$(TargetDir)$(TargetFileName).config" /> 5 </Target>這段代碼的意思就是在Build完成時候,刪除目標文件夾下的xxx.config文件,并根據當前配置環境將項目文件夾中對應的config文件內容復制至目標文件夾,保存名稱為相應的xxx.config。
編輯完成后保存,這是VS會提示
?
點擊“重新加載”即可,然后在Form1中添加測試代碼:
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 label1.Text = System.Configuration.ConfigurationManager.AppSettings["ILoveSleep"]; 7 } 8 }下面是運行結果:
Debug模式下
Release模式下
從運行結果來看,已經達到了預期目的,現在需要做的就是在app.Debug.config中添加測試服務的配置,在app.Release.config中添加正式服務的配置,當選擇Debug模式時,程序會連接測試服務,Release模式時,程序會連接正式服務!
MSBuild十分強大,用好了幾乎可以對整個VS編譯過程進行定制,完成自己想要的任何操作!
這里是文中簡單示例的源碼:WinForm.rar
轉載于:https://www.cnblogs.com/ILoveSleep/p/3181044.html
總結
以上是生活随笔為你收集整理的如何让VS根据编译环境选择相应的配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Subversion 1.7 Eclip
- 下一篇: NSIS设置桌面快捷方式的图标