问题 'Serilog'已经为'Microsoft.CSharp'定义了一个依赖项


我试图安装serilog,我收到错误

PM> Install-Package Serilog
  安装包:'Serilog'已经有了
  为“Microsoft.CSharp”定义的依赖项。在行:1 char:1
  + Install-Package Serilog
  + ~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo:NotSpecified:(:) [Install-Package],InvalidOperationException
      + FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

Microsoft.CSharp 已在我的项目中引用


1973
2017-08-01 18:39


起源

在Visual Studio中更新NuGet扩展 - Tieson T.
谢谢你的工作 - LP13
对于已添加与.NET Core兼容的软件包似乎是必需的。不知道为什么。 - Tieson T.
这对我不起作用。我有VS 2012 Update 5,我将软件包管理器更新到2.8.60318.667但它仍然无效。对我有用的是强制nuget安装以前的版本1.5.14:Install-Package Serilog -Version 1.5.14 - gavin
此外,要强制更新Nuget.exe,您可以从解决方案的.nuget目录中的命令行运行“nuget update -self”。通过“工具 - >扩展...”更新nuget没有更新现有项目的exe。如果你这样做,你不必在下面的答案中做解决方法。 - Harrison


答案:


作为@Tieson T. 说,从Visual Studio窗口>工具>扩展和更新>单击更新选项卡更新“Visual Studio的Nuget包管理器”。选择Nuget插件并更新。然后在安装完成后重新启动visual studio。我试过(Windows 8.1 64bit和Visual Studio 2013 Ultimate)并且它可以工作。


8
2017-10-03 07:13



自我注意:记得进入TeamCity并做同样的事情: confluence.jetbrains.com/display/TCD9/NuGet - Søren Boisen


添加到此。我有一个类似的问题,但问题是由于我们的构建服务器基于TFS 2012并使用旧版本的MSBuild(我们无法在近期更新)。一切都在本地构建并运行良好,但是当构建服务器试图运行时,我们得到了同样的错误。

我找到的解决方法是进入解决方案的packages文件夹,找到有问题的软件包(在我的案例中是Serilog.2.3.0以及我安装的相关Sink软件包)。打开“lib”文件夹,您应该看到一些与各种.Net框架相关联的文件夹。删除与.Net Core版本对应的netstandard文件夹。

这样做的缺点是你必须检查你修改的文件夹,这样MSBuild不会尝试恢复它们。


1
2017-10-07 19:59





请执行以下两个步骤,它适用于我或teamcity / jenkins

  1. 如果您仍在使用Nuget CommandLine 2.8,请尝试升级到3.5。
  2. 如果您使用私人Nuget服务器,请使用以下步骤更新Serilog.2.3.0.nupkg:

    2.1更新Nuget Spec文件:     去掉          ...                ...   

    2.2删除文件夹lib / netstandard1.0和lib / netstandard1.0

    2.3然后将Serilog.2.3.0.nupkg重新部署到您的私有Nuget服务器


0
2018-02-18 00:35



删除targetFramework =“。NETStandard1.0”和targetFramework =“。NETStandard1.3”的组以更新Serilog.nuspec - Jason Leng