NuGet退出,代码为-1073741502-.Net构建失败

时间:2019-07-15 05:56:15

标签: asp.net asp.net-mvc nuget

我遇到了错误。

命令:

"C:\ProjectDir\.nuget\NuGet.exe" install "packages.config" 
-source "https://www.nuget.org/api/v2/"  
-NonInteractive 
-RequireConsent 
-solutionDir "C:\ProjectDir\ "

已退出代码 -1073741502,同时在解决方案中构建我的Class Library项目之一。

结果,我越来越多

  

找不到元数据文件'C:\ ProjectDir \ src \ ProjectName \ bin \ ProjectName.dll'`

解决方案中其他项目的错误。

当我单击该解决方案的还原软件包时,它表明没有要还原的软件包。

关于此修复程序有什么想法吗?

1 个答案:

答案 0 :(得分:0)

虽然很有趣的是,NuGet退出并显示了错误代码,但是知道程序的输出是非常有趣和有用的。如果不与我们分享这些信息,我们就不得不做很多猜测,以减少您得到可以帮助您解决特定情况的答案的机会。

无论如何,NuGet.exe's program returns 1 for almsot all error codes(除非有东西抛出ExitCodeException,但it appears that only signing related code返回1以外的任何值)。因此,我得出结论,NuGet并未真正运行。我最好的猜测是,您在未安装最新版本的.NET Framework的计算机上运行,​​但是您正在运行的nuget.exe的最新版本需要更新的.NET Framework。

您也没有说您正在使用什么版本的nuget.exe。 NuGet 5.x是为Visual Studio 2019设计的,Visual Studio 2019具有.NET Framework 4.7.2的最低要求。 NuGet 4.x是为Visual Studio 2017设计的,它要求.NET Framwork 4.6。但是,维基百科说.NET Framework于2018年4月发布,这向我暗示,如果您未安装.NET Framework,则您不会运行Windows Update,因此您可能容易受到各种恶意软件的攻击。也许您刚刚关闭了建议的更新并仅获取了关键更新,但这值得检查。

因此,尽管我希望这是问题的原因,但我也想评论一下,运行nuget restore而不是nuget install恢复项目和解决方案的程序包是正常的。另外,通常只运行nuget restore mysolution.sln。这有几个好处。 NuGet一次可以比一个项目更有效地还原整个解决方案。其次,您不再需要提供-SolutionDir参数。

您正在运行some_path\.nuget\nuget.exe的事实提示了为什么您一次要还原一个项目的一种可能性。这是在Visual Studio 2010,VS2012和VS2013中完成的,但已从VS2015开始删除。那时可以通过右键单击项目并选择“启用NuGet恢复解决方案”或类似方法来启用它。这是因为那时NuGet并未真正与Visual Studio集成在一起,除了添加此命令之外,该命令将修改所有.NET项目文件并创建包含3个文件的.nuget/目录。从那时起,NuGet与Visual Studio集成在一起,并且可以自动还原而不会破坏项目文件,因此不再需要它。 NuGet has docs on migrating to automatic package restore

更改NET项目文件的旧程序包还原的唯一优点是,在CI计算机上无需执行任何其他操作。简单克隆存储库并运行msbuild。删除后,有必要在构建之前在解决方案文件上运行nuget restore,以还原packages.config项目。如果可以migrate to PackageReference(需要Visual Studio 2017或更高版本),则不需要执行NuGet还原步骤,可以运行msbuild /restore mysoltuion.sln,或者如果解决方案中的所有项目均为SDK样式,则只需{{ 1}}。尽管有些人仍然喜欢将还原和构建分为不同的步骤,但是当出现故障时,如果是还原或编译错误就更加明显。