-2

我想写一个工具来部署我的应用程序,基本上这个东西需要两部分:

  1. 删除文件夹中除文件外的所有web.config内容
  2. 将文件夹中的所有内容转移到另一个文件夹中

现在这个问题我只想完成第一个问题,我们一直在手动部署,所以我想提高我的效率。

这是我的想法。我基本上有两个想法:

  1. 在 Visual Studio 中编写一个应用程序,可能在 C# 中,然后输入文件夹名称,在代码中设置一些内容,删除除web.config
  2. 编写一个简单的脚本,我可以在 cmd 中运行它,然后执行它。

我更喜欢第二个,因为脚本不会那么难调整,而且也很简单。

我的问题是:如果我想写这个脚本,我应该如何开始呢?就像那种文件,你点击它,你会看到一个黑色的 DOS 屏幕,然后你输入运行,然后这些文件夹中的所有内容都将消失。有人可以给我一个起点吗?

非常感谢!

4

1 回答 1

0

您可能可以制作一个简单的控制台应用程序来复制 bin 文件夹中的所有内容(Release 或 Debug)并覆盖应用程序工件(减去配置文件)。这基本上是 Team City、AzureDevOps 和许多其他 DevOps 工具所做的。但是,在后台,他们使用 powershell。如果您的应用程序在替换您的应用程序工件之前没有任何需要停止的服务,您可以使用类似下面的内容。如果您需要停止和启动服务,这也很简单,前提是您有权这样做。这可以编译成可执行文件,或保存为 .ps1 文件。任何一个都可以从 Powershell 运行(Invoke-Item 命令或右键单击并使用 Powershell 运行),或者在命令窗口中运行(https://www.howtogeek.com/674537/how-to-find-and-open-files-using-command-prompt/

# If you need to stop services
Get-Service -Name $serviceName -ComputerName $computerName | Set-Service -Status Stopped;

# Variables
$folder = "C:\CODE\ApplicationFolder\Web\bin\Release"
$webConfig = "WebConfig.exe.config"
$destinationPath = "\\serverName\folderPath\"
$destinationFolder = "Release"

# Zip existing folder and rename for backup
Compress-Archive -Path $destinationPath -DestinationPath $destinationPath\ApplicationArtifacts_Backup_$(Get-Date -Format MMddyyyy).zip | Out-Default

# Get Updated application deployment artifacts
Copy-Item -Path $folder\* -Exclude $webConfig -Destination $destinationPath$destinationFolder -Recurse -Force | Out-Default

# If you need to start services
Get-Service -Name $serviceName -ComputerName $computerName | Set-Service -Status Running;
于 2021-03-07T21:21:38.460 回答