VS Publish Web Application的功能很好用,能够直接预编译整个站点。对于Website, 可以在命令行下通过aspnet_compiler来进行预编译。
但是对于Web Application, aspnet_compiler显然行不通,aspnet_compiler不接受项目文件作为参数,直接把网站文件夹路径作为参数可能会引起其他问题。
于是我尝试用MSBUILD来发布网站。
直接编译:
msbuild Web.csproj /t:Compile /p:Configuration=Release
无效,没有预编译
遍寻网络,得/t:_CopyWebApplication参数
于是:
msbuild Web.csproj /t:Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:/publish
网站文件预编译了,但是没有bin目录
加OutputPath参数:
msbuild Web.csproj /t:Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:/publish /p:OutputPath=C:/publish/bin
dll到bin下面去了,但是引用的外部文件没有了??
增加参数 ResolveReferences:
msbuild Web.csproj /t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:/publish /p:OutputPath=C:/publish/bin
搞定网站全部成功预编译了, 不过多了web.csproj和 web.csproj.user, 直接删除或者通过nant删除即可