Visual Studio 2015发布Web项目时动态获取发布目录创建Temp文件夹
解决VS2015发布Web应用时动态创建Temp文件夹的问题
嘿,我来帮你搞定这个发布时创建Temp文件夹的小麻烦!你的问题核心在于选错了Target的执行时机,以及可能用了不太适配Web发布场景的MSBuild变量。
问题根源
你当前把Target绑定在Build阶段,但这个阶段早于Web发布的核心流程——此时$(PublishDirectory)要么还没被正确赋值,要么指向的不是最终的发布目标目录,所以静态硬编码路径能生效,依赖动态变量的路径就出问题了。
具体解决方案
1. 调整Target的执行时机
把AfterTargets改成Web发布流程中更合适的节点,推荐用PipelinePreDeployCopyAllFilesToOneFolder——这是Web发布时所有文件准备好要复制到发布目录后的关键阶段,此时发布目录的变量已经完全就绪。
2. 使用Web发布专属的目录变量
Web发布场景下,$(WebPublishDir)比$(PublishDirectory)更可靠,它专门指向你在发布配置里指定的文件系统目标路径。
修改后的完整代码示例
<!-- 先声明自定义的Temp文件夹名称(如果需要复用这个变量的话) --> <PropertyGroup> <OutputDirectoryTemp>Temp</OutputDirectoryTemp> </PropertyGroup> <Target Name="CustomCreateTempFolder" AfterTargets="PipelinePreDeployCopyAllFilesToOneFolder"> <!-- 动态拼接发布目录和Temp文件夹路径 --> <MakeDir Directories="$(WebPublishDir)$(OutputDirectoryTemp)" /> </Target>
额外排查技巧
如果还是没生效,可以打开VS的输出窗口,设置MSBuild日志级别为详细(路径:工具→选项→项目和解决方案→构建并运行→MSBuild项目构建输出详细程度),然后重新发布,查看日志里$(WebPublishDir)和$(OutputDirectoryTemp)的实际值,确认路径是否正确拼接。
内容的提问来源于stack exchange,提问作者Gkrish
相关产品推荐
相关产品推荐

