我正在使用FTP将我的ASP .Net Core 2.0应用程序部署到我的远程服务器。远程服务器正在使用IIS 8.当我发布我的应用程序时,我收到以下错误。
Unable to add 'Project.dll' to the Web site. The process cannot access the file because it is being used by another process (550).
我能够通过首先在发布目录上手动创建app_offline.htm
,然后通过Visual Studio 2017发布我的应用程序来绕过这一点。
我在想,有没有更简单的方法呢?或者有一种简单的方法可以编写脚本,以便在发布之前自动创建app_offline吗?发布后删除?
答案 0 :(得分:3)
任何有点好奇的人,我放弃了依赖VS来发布我的.NET Core项目。我现在正在使用我创建的 WinSCP 和_PublishToWeb.bat脚本来完成任务。
我首先在根目录my publish文件夹中创建了一个名为_app.offline.htm
的文件。然后当我需要发布时,我运行下面的脚本。
此脚本执行以下操作:
1.将.NET Core项目构建到特定文件夹,我们称之为“_dist”文件夹
2.连接到我的ftp服务器/发布文件夹并将“_app_offline.html”重命名为“app_offline.html”,以便服务器脱机。
3.将_dist文件夹与发布文件夹同步
4.完成后,将“app_offline.htm”更改为“_app_offline.html”,以便重新启动网站。
<强> _PublishToWeb.bat 强>
echo off
echo Publishing to ProjectName (Optional)
set ProjectRemoteFolder=RemoteFolderName
set ConnectionString=ftp://username:password@serverIp:serverPort
set WinSCP="path to WinSCP.com"
set ProjectDistPath="a folder where dotnet publish will build the project to"
set WebAppProject="path of the project. dotnet publish will run here"
rem Build project and put it in to distribution folder
cd %WebAppProject%
dotnet publish -c Release -o %ProjectDistPath%
rem Connect to FTP and synchronize folder
%WinSCP% /command "open %ConnectionString%/%ProjectRemoteFolder%/" "mv _app_offline.htm app_offline.htm" "synchronize remote %ProjectDistPath%" "mv app_offline.htm _app_offline.htm" "exit"
rem pause
我确信那里有更好的解决方案,但到目前为止,这对我来说一直很好。