解读ASP.NET 5 & MVC6系列教程(3):项目发布与部署

2019-05-22 14:51:39王振洲
ConfigurationAddEnvironmentVariables方法进行收集并利用。

上述参数和环境变量的具体使用方式,请参考配置信息管理章节。

发布流程分析

在之前的MVC程序中,我们一般都是通过右键项目,选择发布(Publish)的方式来发布程序的,这一次我们也来看看这种方式。

首先,右键->发布->Profile(选择File System)->选择D:BookStore->选择Release/coreclr->下一步,最终点击发布。在在Output面板,我们看到出错了,错误信息如下:

正在连接到 D:DocumentsVisual Studio 2015ProjectsBookStoreBookStore..artifactsbinBookStoreReleasePublish...
C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebMicrosoft.DNX.Publishing.targets(342,5): 错误 : 错误: 无法识别规则“BackupRule”。
C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebMicrosoft.DNX.Publishing.targets(342,5): 错误 : 错误计数: 1。

C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebMicrosoft.DNX.Publishing.targets(342,5): 错误 : An error occured during publish.
The command ["C:Program Files (x86)IISMicrosoft Web Deploymsdeploy.exe" -source:contentPath='C:UsersAdministratorAppDataLocalTempPublishTemp' -dest:contentPath='D:DocumentsVisual Studio 2015ProjectsBookStoreartifactsbinBookStoreReleasePublish' -verb:sync -enableRule:DoNotDeleteRule -retryAttempts:2 -disablerule:BackupRule ] exited with code [-1]。

通过查看输出信息,可以发现,编译成功,但复制的时候出错,可能是powershell的问题,所以返回上述步骤,在设置(Settings)选项卡下,将取消发布脚本(Publish Scripts)下的使用PowerShell脚本发布的复选框。重新发布,成功了。

打开发布目录D:BookStore,发现生成了如下目录和文件:

目录或文件 描述
approot 应用程序目录
wwwroot 静态文件目录
gen linux shell命令文件
gen.cmd cmd命令文件
web linux shell命令文件
web.cmd cmd命令文件

看到cmd文件的扩展名,我们可以猜想这些命令是用于执行相关的命令,比如web.cmd可能就是用于启动程序的;而非cmd扩展名文件,我们则猜想可能是用于linux/mac运行的命令。

我们来试一下,点击web.cmd文件,该文件执行以后显示的信息和我们在Debug程序时弹出的信息一样,通过访问提示中的网址,我们可以验证应用程序已经正常运行了。这种模式即时我们所说的自宿主(Self-Host)运行模式。