[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2015\u002Fweb-deploy":20,"surroundPosts-\u002Fposts\u002F2015\u002Fweb-deploy":325},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":306,"cover":306,"coverSize":306,"date":307,"description":29,"draft":308,"extension":309,"hideComments":308,"location":310,"meta":311,"navigation":312,"path":313,"readingTime":314,"seo":319,"sitemap":320,"stem":321,"tags":322,"time":306,"weather":306,"__hash__":324},"posts\u002Fposts\u002F2015\u002F20150516.web-deploy.md","Web Deploy 进阶",{"type":24,"value":25,"toc":304},"minimark",[26,30,35,38,41,262,266,269,272,275,297,300],[27,28,29],"p",{},"之前想写个 Web Deploy 的教程，结果一直耽搁了。最近又遇到一个比较高级的用法，打算暂时就不写基础教程了，把几个不常用的但是很有用的用法列一下。",[31,32,34],"h4",{"id":33},"_1部署的时候排除某些文件或文件夹","1、部署的时候排除某些文件或文件夹",[27,36,37],{},"这个功能其实很有用，比如一些自定义的 config，里面包含了一些 key 或者很重要的信息，而你的代码是开源的，你希望分享源代码，但是这些服务器相关的 key 还是不能暴露的，这时候，你本地的 config 里可能只是一些测试的 key，或者压根就可以是空的。在服务器上的 config 里，你可以放心大胆地配置这些 key。每次部署的时候，我们就希望跳过这些 config 文件，而不至于用本地的 config 去替换掉线上的。",[27,39,40],{},"我们需要修改项目的配置文件，也就是.csproj 文件，注意修改 Release 的，如果你发布选项中配置的是 Release 的话。",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-xml shiki shiki-themes material-theme-lighter github-light github-dark","\u003CPropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    \u003CDebugType>pdbonly\u003C\u002FDebugType>\n    \u003COptimize>true\u003C\u002FOptimize>\n    \u003COutputPath>bin\\\u003C\u002FOutputPath>\n    \u003CDefineConstants>TRACE\u003C\u002FDefineConstants>\n    \u003CErrorReport>prompt\u003C\u002FErrorReport>\n    \u003CWarningLevel>4\u003C\u002FWarningLevel>\n    \u003C!-- 下面这一行用来排除指定文件夹，分号分割多个文件夹 -->\n    \u003CExcludeFoldersFromDeployment>Configurations\u003C\u002FExcludeFoldersFromDeployment>\n    \u003C!-- 下面这一行用来排除指定文件，分号来分隔多个文件 -->\n    \u003CExcludeFilesFromDeployment>XXX.config;YYY.config\u003C\u002FExcludeFilesFromDeployment>\n\u003C\u002FPropertyGroup>\n","xml","",[49,50,51,84,107,126,145,164,183,202,209,228,234,253],"code",{"__ignoreMap":47},[52,53,56,60,64,68,71,75,79,81],"span",{"class":54,"line":55},"line",1,[52,57,59],{"class":58},"sP7_E","\u003C",[52,61,63],{"class":62},"sQzsp","PropertyGroup",[52,65,67],{"class":66},"s9AJx"," Condition",[52,69,70],{"class":58},"=",[52,72,74],{"class":73},"sjJ54","\"",[52,76,78],{"class":77},"s_sjI"," '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ",[52,80,74],{"class":73},[52,82,83],{"class":58},">\n",[52,85,87,90,93,96,100,103,105],{"class":54,"line":86},2,[52,88,89],{"class":58},"    \u003C",[52,91,92],{"class":62},"DebugType",[52,94,95],{"class":58},">",[52,97,99],{"class":98},"su5hD","pdbonly",[52,101,102],{"class":58},"\u003C\u002F",[52,104,92],{"class":62},[52,106,83],{"class":58},[52,108,110,112,115,117,120,122,124],{"class":54,"line":109},3,[52,111,89],{"class":58},[52,113,114],{"class":62},"Optimize",[52,116,95],{"class":58},[52,118,119],{"class":98},"true",[52,121,102],{"class":58},[52,123,114],{"class":62},[52,125,83],{"class":58},[52,127,129,131,134,136,139,141,143],{"class":54,"line":128},4,[52,130,89],{"class":58},[52,132,133],{"class":62},"OutputPath",[52,135,95],{"class":58},[52,137,138],{"class":98},"bin\\",[52,140,102],{"class":58},[52,142,133],{"class":62},[52,144,83],{"class":58},[52,146,148,150,153,155,158,160,162],{"class":54,"line":147},5,[52,149,89],{"class":58},[52,151,152],{"class":62},"DefineConstants",[52,154,95],{"class":58},[52,156,157],{"class":98},"TRACE",[52,159,102],{"class":58},[52,161,152],{"class":62},[52,163,83],{"class":58},[52,165,167,169,172,174,177,179,181],{"class":54,"line":166},6,[52,168,89],{"class":58},[52,170,171],{"class":62},"ErrorReport",[52,173,95],{"class":58},[52,175,176],{"class":98},"prompt",[52,178,102],{"class":58},[52,180,171],{"class":62},[52,182,83],{"class":58},[52,184,186,188,191,193,196,198,200],{"class":54,"line":185},7,[52,187,89],{"class":58},[52,189,190],{"class":62},"WarningLevel",[52,192,95],{"class":58},[52,194,195],{"class":98},"4",[52,197,102],{"class":58},[52,199,190],{"class":62},[52,201,83],{"class":58},[52,203,205],{"class":54,"line":204},8,[52,206,208],{"class":207},"sutJx","    \u003C!-- 下面这一行用来排除指定文件夹，分号分割多个文件夹 -->\n",[52,210,212,214,217,219,222,224,226],{"class":54,"line":211},9,[52,213,89],{"class":58},[52,215,216],{"class":62},"ExcludeFoldersFromDeployment",[52,218,95],{"class":58},[52,220,221],{"class":98},"Configurations",[52,223,102],{"class":58},[52,225,216],{"class":62},[52,227,83],{"class":58},[52,229,231],{"class":54,"line":230},10,[52,232,233],{"class":207},"    \u003C!-- 下面这一行用来排除指定文件，分号来分隔多个文件 -->\n",[52,235,237,239,242,244,247,249,251],{"class":54,"line":236},11,[52,238,89],{"class":58},[52,240,241],{"class":62},"ExcludeFilesFromDeployment",[52,243,95],{"class":58},[52,245,246],{"class":98},"XXX.config;YYY.config",[52,248,102],{"class":58},[52,250,241],{"class":62},[52,252,83],{"class":58},[52,254,256,258,260],{"class":54,"line":255},12,[52,257,102],{"class":58},[52,259,63],{"class":62},[52,261,83],{"class":58},[31,263,265],{"id":264},"_2通过文件校验而不是修改时间来决定某个文件是否需要发布","2、通过文件校验而不是修改时间来决定某个文件是否需要发布",[27,267,268],{},"这个功能同样很有用，尤其当你通过源代码管理的时候，你在不同的电脑上，虽然代码相同，但其实每个文件的修改时间并不同。这会导致你在这台电脑上部署了之后，在另一台电脑上修改了部分内容，却还是需要部署所有文件。当网络不给力的时候，部署需要很长时间。",[27,270,271],{},"我们需要修改部署配置文件，一般是 Properties\\PublishFiles\\XXX.pubxml。",[27,273,274],{},"我们在 PropertyGroup 里添加这么一行就可以了",[42,276,278],{"className":44,"code":277,"language":46,"meta":47,"style":47},"\u003CMSDeployUseChecksum>true\u003C\u002FMSDeployUseChecksum>\n",[49,279,280],{"__ignoreMap":47},[52,281,282,284,287,289,291,293,295],{"class":54,"line":55},[52,283,59],{"class":58},[52,285,286],{"class":62},"MSDeployUseChecksum",[52,288,95],{"class":58},[52,290,119],{"class":98},[52,292,102],{"class":58},[52,294,286],{"class":62},[52,296,83],{"class":58},[27,298,299],{},"先写这两个。之后有空再写个详细的教程。一开始配置 Web Deploy 还是有不少注意点的。",[301,302,303],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s9AJx, html code.shiki .s9AJx{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":47,"searchDepth":86,"depth":86,"links":305},[],null,"2015-05-16",false,"md","Newegg",{},true,"\u002Fposts\u002F2015\u002Fweb-deploy",{"text":315,"minutes":316,"time":317,"words":318},"3 min read",2.67,160200,534,{"title":22,"description":29},{"loc":313},"posts\u002F2015\u002F20150516.web-deploy",[323],"技术","2jUSREuWsKeGgy1Q_Pm499_KB5FkuLSK5o5h2wYnQvw",[326,332],{"title":327,"path":328,"stem":329,"date":330,"description":331,"children":-1},"再见，新蛋","\u002Fposts\u002F2015\u002Fgood-bye-newegg","posts\u002F2015\u002F20150520.good-bye-newegg","2015-05-20","最近开始变得敏感起来。上班路上，我开始变得格外注意窗外的风景。因为我知道，以后我将不会每天再走在这条熟悉的路上了。",{"title":333,"path":334,"stem":335,"date":336,"description":337,"children":-1},"修复 position:fixed 在 ios 虚拟键盘弹出时错位的 bug","\u002Fposts\u002F2015\u002Ffix-fixed-bug-in-ios-when-call-virtual-keyboards","posts\u002F2015\u002F20150413.fix-fixed-bug-in-ios-when-call-virtual-keyboards","2015-04-13","问题描述：在使用 bootstrap 的 navbar-fixed-top 时，发现在 iPhone 上的微信里面，当点击 input 弹出输入法之后，顶部 fixed 的 navbar 消失，在输入法没有关闭的情况下，向上滚动，会发现 navbar 在半空中。",1777580286057]