如何通过MSBuild直接发布MVC项目文件至工件暂存目录?
解决MSBuild直接输出未压缩发布文件的问题
我来帮你搞定这个问题——核心就是调整几个关键的MSBuild参数,关掉生成压缩包的逻辑,同时正确指定文件输出的目录。
正确的MSBuild命令示例
直接用这个参数组合就能生成未压缩的发布文件到指定目录:
MSBuild my_solution_name.sln /t:"my_web_proj_name" /p:Configuration=Release /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:PackageAsSingleFile=false /p:publishUrl="D:\temp\app_build_dir"
为什么之前的参数失效?
咱们逐个分析你之前的尝试:
- 初始参数:你加了
PackageAsSingleFile=true,这就是强制生成单个压缩包的根源,把它改成false或者直接删掉这个参数(默认值就是false),就不会生成zip包了。 - 更新后的参数:你用了
PackageLocation,这个参数是和「打包发布」逻辑绑定的,对于文件系统直接发布场景,应该用publishUrl来指定输出目录,PackageLocation在这里会导致逻辑混乱。 - 第三个参数:大概率是因为没明确设置
PackageAsSingleFile=false,或者缺少Configuration(比如Release)指定,导致构建过程没有触发正确的发布逻辑。
额外优化建议
- 直接构建项目文件而非解决方案,能避免不必要的项目构建,速度更快也更可靠:
MSBuild My_MVCWeb_Project_Name.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:PackageAsSingleFile=false /p:publishUrl="D:\temp\app_build_dir" - 在VSTS(Azure DevOps)的构建定义里,把
publishUrl设置为$(build.artifactstagingdirectory),这样生成的文件会直接放到工件暂存目录,后续本地代理的复制文件任务就能直接从这个目录把文件复制到IIS应用目录了。
内容的提问来源于stack exchange,提问作者bitshift
相关产品推荐
相关产品推荐

