Try   HackMD

透過 ps1 部署 .Net 程式到 IIS 內

tags: .Net 筆記

常常需要透過手動的方式部署,想透過一鍵 F5 執行

前置作業

預設有開啟 陰影複製 (Shadow-copying) 並設定好權限,接著設定好下面 ps1 內需要的變數,就可以 F5 執行一鍵部署到 IIS 站台內。

# 定義檔案路徑和專案路徑 $projectPath = "<專案路徑>.csproj" # 例如 "D:\SomeProject.csproj" $publishFolder = "<發佈資料夾>" # 例如 "D:\publish\SomeProject" # 確保目標目錄存在 $destinationFolder = "<目標目錄>" # 例如 "D:\IIS\SomeProject" $destinationFolderExcludeFiles = @("<排除檔案1>", "<排除檔案2>") # 例如 @("web.config", "appsettings.json") # 執行 dotnet publish 命令,並輸出到 $publishFolder dotnet publish $projectPath -c Release -o $publishFolder # 刪除發佈資料夾內的 web.config, 確保不會覆蓋到設定檔, 除非會完全一致 if (Test-Path "$publishFolder\web.config") { Remove-Item "$publishFolder\web.config" -ErrorAction SilentlyContinue } if (-Not (Test-Path -Path $destinationFolder)) { New-Item -ItemType Directory -Path $destinationFolder } Remove-Item -Path "$destinationFolder\*" -Recurse -Force -Exclude $destinationFolderExcludeFiles # 將 publish 目錄複製到對方目錄 Copy-Item -Path "$publishFolder\*" -Destination $destinationFolder -Recurse -Force # 移除發佈的資料夾 Remove-Item -Path "$publishFolder" -Recurse -Force