执行指定MSBuild命令时遇文件路径错误的原因及解决方法咨询
MSBuild发布错误:找不到obj\Release\Package\PackageTmp\Apps\Web.config的解决办法
错误信息
执行以下MSBuild发布命令时:
msbuild /p:Configuration=Release;DeployOnBuild=True;DeployDefaultTarget=WebPublish;WebPublishMethod=FileSystem;PublishProvider=FileSystem;LastUsedBuildConfiguration=Release;ExcludeApp_Data=False;publishUrl=../CommercePackageContent/wwwroot;DeleteExistingFiles=True
出现如下错误:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsoft.Web.Publishing.targets(2309,5): error : Could not open Source file: Could not find a part of the path 'obj\Release\Package\PackageTmp\Apps\Web.config'
错误原因
- 文件未被项目包含:项目中
Apps\Web.config未被标记为"内容"类型,编译/发布流程未将其复制到临时发布目录 - 临时文件清理异常:历史清理操作删除了临时目录文件,但后续生成步骤未重新生成该文件
- 路径不匹配:项目中Web.config的实际存储位置与MSBuild预期的
Apps\Web.config路径不一致 - 权限不足:运行MSBuild的账号对
obj\Release\Package\PackageTmp目录无读写权限 - 发布参数冲突:
DeleteExistingFiles=True参数可能提前删除了临时目录中的必要文件
解决办法
- 检查项目文件配置:打开项目的
.csproj文件,确认是否存在<Content Include="Apps\Web.config" />配置。若缺失,手动添加该节点,确保文件被标记为内容类型,会随发布流程复制到目标目录 - 清理后重新发布:先执行清理命令清除旧的临时文件,再重新执行发布命令:
msbuild /t:Clean /p:Configuration=Release # 再执行原发布命令 - 验证文件路径:确认项目中Web.config的实际位置是否在
Apps目录下,若路径不符,调整文件位置或修改发布配置以匹配预期路径 - 检查目录权限:确保运行MSBuild的用户账号对
obj\Release\Package\PackageTmp目录拥有读写权限 - 临时调整发布参数:暂时将
DeleteExistingFiles=True改为False,测试是否能正常发布,排查是否是该参数导致文件被提前删除
附用户提供的Web.config内容
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration> <!-- <system. Web> <authorization> <deny users="?" /> </authorization> </system. Web> --> <appSettings> <add key="epi:HelpUrl" value="http://webhelp.episerver.com/latest/en/EpiserverUserGuide_csh.htm" /> </appSettings> <system. Web> <pages validateRequest="false" enableEventValidation="false"></pages> </system. Web> </configuration>
内容的提问来源于stack exchange,提问作者user2422044
相关产品推荐
相关产品推荐

