我有一個針對.NET Framework 4.7的舊ASP.Net應用程序。這個應用程序是一個爲期五年的開發練習,非常成熟。它有相當多的支持庫項目都在同一個解決方案中。有三個用於數據庫通信的EF6項目。如何在VSTS中只包含一個構建步驟來打包混合項目解決方案?
我們已經開始轉向.NET Core,並且已經添加了一個新的.NET Core Web項目,目標是.NET Framework 4.7,因此我們可以在遷移時使用EF6項目。這一切都很好。
我們的源代碼託管在VSTS中,我們在我們的域中使用遠程構建服務器而不是Azure構建服務器。我可以成功構建沒有MSBuild參數的解決方案。但是生成部署包所需的MSBuild參數與傳統的ASP.Net應用程序和ASP.Net Core應用程序不同。所以我創建了兩個解決方案,一個是遺留項目和所有庫項目,而不是ASP.Net Core項目。另一個是ASP.Net Core項目和所有庫項目,但不包括傳統的ASP.Net項目。我還有兩個構建步驟,每個解決方案都包含每個Web項目構建部署包所需的MSBuild參數。
我想知道是否有人知道如何更改此設置,以便我只在主解決方案上有一個構建步驟。是否有任何VSTS任務會從構建中獲取輸出並創建我需要的部署包?我需要對傳統的ASP.Net項目進行web.config轉換,但.NET Core不支持這種轉換,所以我認爲這是掛起的原因。我知道有一種方法可以創建一個使用DSC和PowerShell來打包和部署所有內容的Azure部署解決方案,但這對我來說似乎有點矯枉過正。我在下面包含了兩個MSBuild設置。
傳統ASP.Net的MSBuild參數:
/P:DeployOnBuild = TRUE/P:WebPublishMethod =封裝/ P:PackageAsSingleFile = TRUE/P:SkipInvalidConfigurations = TRUE/P:PackageLocation =「$(建.artifactstagingdirectory)\應用」/p:AutoParameterizationWebConfigConnectionStrings =假
ASP.Net核心的MSBuild參數:
/p:DeployOnBuild =真/ p:WebPublishMethod =吃豆卡格/ P:PackageAsSingleFile = TRUE/P:SkipInvalidConfigurations =真/p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\RSD.zip」/P:DeployIisAppPath = 「默認Web站點」
您不能擁有「.NET Core Web項目以.NET Framework 4.7爲目標」。你的意思是ASP.NET Core? – mason
我能想到的唯一解決方案使得它更加「複雜」,因爲添加了一個定製的MSBuild項目文件,該文件負責CI流程,但允許在每個分支基礎上配置正確的設置,因此您不需要每次更改應用程序結構時都必須重新配置CI。這對你來說是一種選擇嗎? (類似於[CI腳本](https://gist.github.com/dasMulli/69f5303aa79a8cd4060e44891c90fd2d)) –
我確實是指ASP.Net Core。對不起,我在大多數地方說過ASP.Net Core,但在我的一個引用中忽略了「ASP」。 – Brian