我的目標是在Visual Studio Team Services中爲測試和生產環境創建構建定義。我需要在我的代碼中更新2個變量,這些變量決定哪個數據庫以及環境使用哪個blob存儲。到目前爲止,我已經在Resource變量中處理了這個值,並從庫的代碼My.Resources.DB
中提取了該值,對於Azure輔助角色,該值爲Microsoft.Azure.CloudConfigurationManager.GetSetting("DatabaseConnectionString")
。但是,每次發佈版本時更改4個變量都會令人疲勞。是否可以將構建過程中的變量傳遞給Visual Basic代碼?
我看到很多接近我想要的帖子,但他們是面向C#。由於超出我的影響的原因,這個項目是用VB.NET編寫的。看來我有2個選項。首先,我可以用一些定義的屬性調用MSBuild進程,將它們傳遞給.metaproj構建文件,但我不知道如何讓它們用於VB代碼。這是可取的,但在這一點上,我開始懷疑這是可能的。
我已經能夠設置一些預處理器常量,在#if#else語句中被識別。
#If DEBUG = True Then
BarStaticItemVersion.Caption = String.Format("Version: {0}", "1.18.0.xxx")
#Else
BarStaticItemVersion.Caption = String.Format("Version: {0}", "1.18.0.133")
#End If
msbuild CalbertNG.sln.metaproj /t:Rebuild /p:DefineConstants="DEBUG=False"
這似乎是工作,但我需要重建更改該常量的值。我需要嗎?應該建立足夠的?這是正常的,還是表明我沒有設置正確的東西?
我已經看到其他一些文章討論預處理源文件與其他一些建設者,如螞蟻,但似乎是矯枉過正。感覺就像我在這裏。但是我想縮小並從一張乾淨的紙上問你是否有兩個變量需要在每個環境中改變,你使用的是VB.NET,並且你希望將這些變量值合併到一個自動化的VS中團隊服務在代碼簽入時構建過程,最好的方法是什麼? (我想在VSTS面板中定義變量,但這只是將它們傳遞給我的構建器,所以我必須知道如何解析對MSBuild的調用以使它們有用)。
我可以控制2靜態字符串,現在,通過編譯器指令,但我真的很想引用MSBuild進程中顯示給用戶的Build.BuildNumber,如果可以這樣做,我可以將變量提供給數據庫和blob容器通過相同的機制,並跳過預處理器。
我們爲每個環境的項目添加配置,並設置轉換以設置連接字符串和其他設置。也看看使用SlowCheetah。 – JerryM
您應該使用web.config或app.config來存儲環境特定的變量,如連接字符串。 –
我很欣賞使用app.config的建議,但後來我遇到了類似的問題:如何通過msbuild.exe在THAT文件中設置值? –