MSBuild通过Bitbucket代理构建时找不到NuGet包的技术问询
问题分析:Bitbucket代理构建时NuGet包找不到的原因确认
问题现象
构建服务器安装VS2022 Community,RDP登录后执行MSBuild命令可正常构建解决方案,但Bitbucket代理触发相同命令时构建失败,报错找不到NuGet包,示例错误如下:
C:\Program Files\dotnet\sdk\9.0.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): error NETSDK1064: Package EntityFramework, version 6.1.3 was not found. It might have been deleted since NuGet restore. Otherwise, NuGet restore might have only partially completed, which might have been due to maximum path length restrictions. [C:\bitbucketagent\temp\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\xxxxxxxxxxxx\build\xxxxxxxxxx.csproj::TargetFramework=net472] 0 Warning(s) 4 Error(s)
日志对比差异
开启/v:diag日志后,对比两种场景的NuGet源路径:
- **正常场景(RDP会话执行)**的SourceRoot:
SourceRoot C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\ C:\Users\Administrator\.nuget\packages\ - **异常场景(Bitbucket代理执行)**的SourceRoot:
SourceRoot C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\ C:\Windows\system32\config\systemprofile\.nuget\packages\
关键差异点:
- Bitbucket代理并非以Administrator身份运行,而是使用系统内置的systemprofile账户;
C:\Windows\system32\config\systemprofile\.nuget\packages\目录实际不存在;- 异常场景缺失正常场景中存在的NuGet包引用文件条目:
Output Item(s): _ReferenceDocumentationFiles= C:\Users\Administrator\.nuget\packages\system.componentmodel.annotations\4.7.0\ref\net461\System.ComponentModel.Annotations.xml NuGetPackageId=System.ComponentModel.Annotations NuGetPackageVersion=4.7.0 (TaskId:54)
结论
上述现象完全符合MSBuild无法写入代理用户对应的NuGet包目录时的表现:
- 代理运行时使用的systemprofile账户没有对应的
.nuget/packages目录,且可能没有权限创建该目录; - NuGet restore步骤无法将包下载到该路径,导致后续MSBuild构建时找不到依赖包;
- RDP会话使用的Administrator账户已有现成的NuGet包缓存目录,因此构建正常。
内容的提问来源于stack exchange,提问作者Remotec
相关产品推荐
相关产品推荐

