我遇到了在旧项目中安装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可能有问题,因为我无法卸载或安装任何接收器,但我无法解决问题。
详细说明:
答案 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>