我正在尝试使用.NET Core CLI命令 dotnet恢复 在詹金斯。当我以Jenkins使用的用户身份登录时,使用解决方案导航到工作区文件夹,它可以正常工作。但是,当我创建Jenkins作业并添加构建步骤来执行命令时,我得到了
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: path1
at System.IO.Path.Combine(String path1, String path2, String path3)
at NuGet.Common.NuGetEnvironment.GetFolderPath(NuGetFolderPath folder)
at NuGet.Configuration.SettingsUtility.GetHttpCacheFolder()
at NuGet.Configuration.NuGetPathContext.Create(ISettings settings)
at Microsoft.DotNet.Configurer.NuGetCacheSentinel.get_NuGetCachePath()
at Microsoft.DotNet.Configurer.NuGetCacheSentinel.Exists()
at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.ShouldPrimeNugetCache()
at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(INuGetCacheSentinel nugetCacheSentinel)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)
奇怪的是:
1)当我将参数“--packages C:\ test”传递给dotnet restore时,这种方式失败了。
2)callstack表示它认为它正在运行并且是第一次配置.NET Core。尽管之前已经以此用户身份运行过它。
3)我已经读过,默认情况下,dotnet restore会将软件包恢复到%USERPROFILE%目录。奇怪的是,当我刚刚将jenkins任务发送到ECHO%USERPROFILE%时,它返回C:\ Users \ Default目录,而不是正确的用户目录。所以它没有拿起环境变量%USERPROFILE%。
为什么Jenkins认为它每次都是第一次配置.NET Core,为什么它没有正确的用户目录,有没有办法解决这些问题以运行.NET Core CLI?
更新:我深入研究了nuget代码,发现它试图找到LOCALAPPDATA。我在Jenkins中设置了这个,但现在我收到了错误
C:\ Program Files \ dotnet \ sdk \ 1.0.4 \ NuGet.targets(97,5):错误:值不能为空。 [d:\工作区\ WebCore的\ WebStarter.sln] C:\ Program Files \ dotnet \ sdk \ 1.0.4 \ NuGet.targets(97,5):错误:参数名称:path1 [D:\ Workspaces \ WEBCORE \ WebStarter.sln]
看起来像是一个类似的问题。需要为dotnet还原设置哪些环境变量才能运行?
答案 0 :(得分:0)
Bamboo Windows代理上也会发生相同的问题。该解决方案涉及设置以下环境变量。在dotnet core SDK v2.1.302上进行了测试。
set HOMEPATH=%USERPROFILE%
set APPDATA=%USERPROFILE%\AppData\Roaming
set LOCALAPPDATA=%USERPROFILE%\AppData\Local