无法安装NuGet软件包Serilog.Sinks。*

时间:2018-03-20 13:48:02

标签: asp.net visual-studio nuget nuget-package

我遇到了在旧项目中安装Serilog.Sinks软件包的问题,​​例如:当我尝试安装Serilog.Sinks.MSSqlServer时,我收到以下错误:

An error occurred while retrieving package metadata for Serilog.2.6.0

我已经安装了包Serilog.2.6.0并且过程很顺利,我尝试运行使用此库的代码并且它可以正常工作,但是如果我尝试卸载此包,我会收到错误:

Object reference not set to an instance of an object

因此,我认为机器中的Serilog.2.6.0可能有问题,因为我无法卸载或安装任何接收器,但我无法解决问题。

详细说明:

  • Visual Studio 2015
  • .NET Framework 4.5 Web窗体

4 个答案:

答案 0 :(得分:0)

嗨这对我有用nugget install Serilog.Sinks

答案 1 :(得分:0)

如果您无法通过软件包管理器控制台或Nuget软件包管理器卸载您的nuget,您仍然可以选择卸载它。打开package.config文件。

看起来像这样:

<packages>
  <package id="Respond" version="1.2.0" targetFramework="net461" />
  <package id="Serilog" version="2.6.0" targetFramework="net461" />
  <package id="WebGrease" version="1.5.2" targetFramework="net461" />
</packages>

在那里,您会发现Serilog的ID与相关版本的依赖关系。删除该行。然后卸载您的项目,进行编辑,在那里您会找到HintPath的{​​{1}}:

看起来像这样:

Serilog

然后可以手动卸载软件包<Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL"> <HintPath>..\packages\Serilog.2.6.0\lib\net46\Serilog.dll</HintPath> <Private>True</Private> </Reference>

此外,如果重新安装该软件包在卸载后仍会出现相同的错误,则此问题应与NuGet而不是软件包Serilog更相关。

在这种情况下,请尝试从Tools-&gt; Extensions and Updates卸载Visual Studio 2015的NuGet包管理器,重新启动Visual Studio。然后安装最新版本的NuGet:

https://dist.nuget.org/visualstudio-2015-vsix/latest/NuGet.Tools.vsix

安装完成后,以管理员模式重新打开Visual Studio(右键单击Visual Studio并以管理员模式启动),尝试再次安装该程序包,检查它是否正常工作。

答案 2 :(得分:0)

对于这种情况起作用的东西,从我试过的那些东西,是从另一个项目中复制引用(.dll文件),它们工作得很好。谢谢您的回答! :)

答案 3 :(得分:0)

使用以下package.config设置对我来说很好用:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Serilog" version="2.6.0" targetFramework="net461" />
  <package id="Serilog.Exceptions" version="4.1.0" targetFramework="net461" />
  <package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net461" />
</packages>