使用System.ArgumentNullException

时间:2017-07-13 15:20:47

标签: jenkins .net-core

我正在尝试使用.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还原设置哪些环境变量才能运行?

1 个答案:

答案 0 :(得分:0)

Bamboo Windows代理上也会发生相同的问题。该解决方案涉及设置以下环境变量。在dotnet core SDK v2.1.302上进行了测试。

    set HOMEPATH=%USERPROFILE%
    set APPDATA=%USERPROFILE%\AppData\Roaming
    set LOCALAPPDATA=%USERPROFILE%\AppData\Local