/ 技术

Web Deploy 进阶

之前想写个Web Deploy的教程,结果一直耽搁了。最近又遇到一个比较高级的用法,打算暂时就不写基础教程了,把几个不常用的但是很有用的用法列一下。

1、部署的时候排除某些文件或文件夹。

这个功能其实很有用,比如一些自定义的config,里面包含了一些key或者很重要的信息,而你的代码是开源的,你希望分享源代码,但是这些服务器相关的key还是不能暴露的,这时候,你本地的config里可能只是一些测试的key,或者压根就可以是空的。在服务器上的config里,你可以放心大胆地配置这些key。每次部署的时候,我们就希望跳过这些config文件,而不至于用本地的config去替换掉线上的。

我们需要修改项目的配置文件,也就是.csproj文件,注意修改Release的,如果你发布选项中配置的是Release的话。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <!-- 下面这一行用来排除指定文件夹,分号分割多个文件夹 -->
    <ExcludeFoldersFromDeployment>Configurations</ExcludeFoldersFromDeployment>
    <!-- 下面这一行用来排除指定文件,分号来分隔多个文件 -->
    <ExcludeFilesFromDeployment>XXX.config;YYY.config</ExcludeFilesFromDeployment>
</PropertyGroup>

2、通过文件校验而不是修改时间来决定某个文件是否需要发布

这个功能同样很有用,尤其当你通过源代码管理的时候,你在不同的电脑上,虽然代码相同,但其实每个文件的修改时间并不同。这会导致你在这台电脑上部署了之后,在另一台电脑上修改了部分内容,却还是需要部署所有文件。当网络不给力的时候,部署需要很长时间。

我们需要修改部署配置文件,一般是Properties\PublishFiles\XXX.pubxml。

我们在PropertyGroup里添加这么一行就可以了

<MSDeployUseChecksum>true</MSDeployUseChecksum>

先写这两个。之后有空再写个详细的教程。一开始配置Web Deploy还是有不少注意点的。

by HADB @ Newegg