DotNetCore跨平臺(tai)~發布腳本(ben)PowerShell的設計
這幾天對(dui)PS情有(you)獨(du)忠,被它的(de)(de)強大功(gong)能所(suo)(suo)希引,它可以快速部署,快速發布,將一(yi)些連帶的(de)(de)動(dong)作一(yi)次(ci)的(de)(de)完成,挺方便,類似于早期的(de)(de)bat文件,也像linux平(ping)臺的(de)(de)bash腳本,但功(gong)能上(shang),比前兩(liang)者都要強很(hen)多,下(xia)面我們(men)看一(yi)下(xia)將某個解決(jue)方案下(xia)的(de)(de)所(suo)(suo)有(you)項目一(yi)次(ci)publish的(de)(de)過(guo)程,我們(men)使用ps腳本來實現的(de)(de)。
# 作者:倉儲大叔 # 功(gong)能:發布項目到指定的地方 Param([string] $rootPath) $scriptPath = Split-Path $script:MyInvocation.MyCommand.Path Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow if ([string]::IsNullOrEmpty($rootPath)) { $rootPath = "$scriptPath\.." } Write-Host "Root path used is $rootPath" -ForegroundColor Yellow $projectPaths = @{Path="$rootPath\src\LindCore.Manager";Prj="LindCore.Manager.csproj";Name="web"}, @{Path="$rootPath\src\LindCore.Test";Prj="LindCore.Test.csproj";Name="console"} $projectPaths | foreach { $projectPath = $_.Path $projectFile = $_.Prj $name=$_.Name # $outPath = $_.Path + "\obj\publish" $outPath = "d:\publish\"+$name $projectPathAndFile = "$projectPath\$projectFile" Write-Host "Deleting old publish files in $outPath" -ForegroundColor Yellow remove-item -path $outPath -Force -Recurse -ErrorAction SilentlyContinue Write-Host "Publishing $projectPath to $outPath" -ForegroundColor Yellow dotnet restore $projectPathAndFile dotnet build $projectPath dotnet publish $projectPath -o $outPath }
注意(yi):如(ru)果(guo)你只是把跨(kua)平臺項目發到(dao)obj\publish文(wen)件(jian)夾的(de)話,那wwwroot這些(xie)文(wen)件(jian)夾不會生(sheng)成,而(er)如(ru)果(guo)發到(dao)其它磁盤(pan),將會生(sheng)成這些(xie)靜(jing)態的(de)文(wen)件(jian),這點(dian)要注意(yi)!
跨(kua)平臺項目,需要在project.json里把運行(xing)時(shi)都加上,否則(ze)你的項目保能在當前平臺運行(xing)
"runtimes": { "win7-x64": {}, "linux-x64": {}, "osx-x64": {} },
感(gan)謝各位(wei)對.net core的(de)支(zhi)持!