Visual Studio 2017 .Net Core升級問題排除

  昨天一早很興奮的安裝好Visual Studio 2017,在測試手頭上主要的專案在VS2017上建置及發行都無誤後,簽入TFS使用Jenkins作建置及發行,也都可以正常執行。不過下午升級另一個使用.NetCore開發的專案就沒那麼順利了。

問題一,Team Service 無法正常繫結


Vs2017捨棄了project.json檔,並改回副檔名.csproj的專案檔 ps:在Vs2015是.xproj,所以在開啟專案時會針對舊設定作升級動作。以下圖為例

升級後,project.json移除及副檔名變更

SNAGHTML103e4c6

此動作,若在未繫結的狀態,可以正常升級,但若是在繫結的狀態下,升級後再打開,就會出現專案變成新增狀態,或是方案內的專案無法正常載入等。

解決方式

在測試了一堆有的沒的方法後,都沒用 例:先簽出再升級等,最後放大絕,將Team Service上的專案刪除,以未繫結的專案升級後再重新加入即可

問題二,MsBuild無法發行package


在Vs2017上建置及發行.NetCore都正常,但在Jenkins使用MsBuild指令時,出現無法建置的錯誤。
指令:

msbuild.exe /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:configuration=Release  D:\NetCore2017\NetCore2017\NetCore2017.csproj

image

因為Vs2017的.NetCore 專案檔為新的format,需使用MsBuild 15.0建置,而目前Jenkins上預設是14.0。

切換路徑 cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin,再測試後,得到另一錯誤為取不到目錄

image

Ps:相同的參數,若建置的是原.netFramework的專案,則沒有問題。

解決方式

根據錯誤訊息,在發行時會參考.netCore的建置檔案,路徑如下:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeployPackage.targets

看完後裡面的設定後,判斷剛的錯誤為DesktopBuildPackageLocation未指定,還有另一個是會檢查DeployIisAppPath是否有值,所以需增加這兩個參數,完整如下:

msbuild.exe /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:configuration=Release /p:DeployIisAppPath="NetCore2017"  /p:DesktopBuildPackageLocation="bin\Release\package.zip"  D:1\NetCore2017\NetCore2017\NetCore2017.csproj

相關參考

https://dneimke.github.io/aspnet_msbuild

這個網誌中的熱門文章

[TFS] 分支與合併

[.NET Core] 將專案發行至IIS