文章描述:在此之前,我一直习惯使用文件夹的发布方式,即在项目上右键->发布->文件夹。然后设置其相关属性,等vs发布完毕之后,自己再复制到服务器,很多时候还得需要先停止服务才能复制上去,感觉就很麻烦(虽然用习惯了);其实通过ftp的方式或许也可以,只是我不太喜欢,因为还得先去服务器去配置ftp等相关服务,而后这个ftp除了做这个好像也没其他用,再者,我并不能确定是否可以不手动停止服务就能直接发布上去(我从一开始就排斥,所以没试过,有兴趣的可以自己试下)。.
开发环境:.NET6
开发工具: Visual Studio 2022
实现步骤:
-
首先要确保IIS安装了管理脚本和工具
-
下载web部署包:
https://download.visualstudio.microsoft.com/download/pr/e1828da1-907a-46fe-a3cf-f3b9ea1c485c/035860f3c0d2bab0458e634685648385/webdeploy_amd64_en-us.msi
3. 安装的时候选择完全安装,好像是最后一个选项。这个很重要
4. 等安装完成后,会在IIS右键菜单上显示部署选项
-
点击部署->启用Web Deploy发布,这里设置其可以发布的用户(默认就是你当前使用的用户,密码也是你远程的密码)
-
输入sql字符串这里,由于我发布的是.net6 webapi,sql字符串是配置到appsettings.json中的,在这里识别不到,不过也没关系,因为在iis发布设置的时候,是可以识别到并替换的
-
后面两个设置也就不用管了,点设置把文件保存就ok了
-
把文件复制到本地,然后用记事本编辑一下,内容大致如下,记得把注释去掉
<?xml version="1.0" encoding="utf-8"?> <publishData> <publishProfile <!--这里xxx换成服务器的IP--> publishUrl="https://xxx:8172/msdeploy.axd" <!--这里是iis需要部署的网站名称--> msdeploySite="Default Web Site" <!--这里是发布完成后打开的网址,可测试用--> destinationAppUrl="http://xxx:80/" <!--mysql连接字符串--> mySQLDBConnectionString="" <!--sqlserver连接字符串--> SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="xxx\Administrator" /> </publishData>
-
回到vs2022,在WebApi项目上右键->发布->导入配置文件->我们刚刚编辑的文件
-
导入成功后,在这个页面点击显示所有设置
-
在连接选项中,将服务器密码写入并选择保存密码
-
在设置选项中,勾选在运行时使用此连接字符串,写入正式库的连接字符串就会在发布的时候自动替换了,其他设置可根据需要填写并保存。
-
回到VS2022,在头部可以看到刚刚保存的配置,直接点击发布按钮即可完成发布,如果没有可以自己在头部空白部分右键找出你需要的选项。也可以通过项目右键的方式进行发布。
-
自此就完成了一键发布的配置,以后发布就爽快多了(建议个人或者小公司使用,大公司一般会有自己比较严格的发布流程)