|
|
1
2
“直截了当”回答:你不必担心。在项目中安装或升级包时,NuGet会告诉项目系统要在
详细的回答:当使用NuGet时,“version”一词通常指的是包的版本,在本例中是1.2.11。看着 package page on nuget.org ,在版本历史下,我们可以看到其他版本,如1.2.10、2.0.0、2.0.1到2.0.8。除非有多个项目引用了不同版本的包,否则NuGet不会下载多个版本。 .NET有不同版本的运行库,其中一些版本与其他版本不兼容,但这些版本称为目标框架名字对象(TFM),尽管不为Microsoft工作的人倾向于将其称为目标框架或类似的名称。它类似于Java、Python、PHP等其他托管运行时或脚本语言,但可能更复杂,因为过去创建了大量tfm,主要针对具有不同功能的不同移动设备。另外,Windows运行时被分成3个“家族”,其中tfm向后兼容,但只在同一个“家族”中。这个 Nuget Client has a complex mapping of compatible TFMs 一个包可能包含不同TFM的多个dll的另一个原因是,它们希望在较新的TFM中使用较新的api,同时仍然允许针对较旧TFM的项目在不使用新api的情况下使用包。例如,虽然net45、net46、net47和soon net48都与net40兼容,但net40没有async await。因此,一个包可能有一个net40dll,所以以net40为目标的项目仍然可以使用这个包,但是这个包也可以包含一个带有额外异步api的net45 dll。net1x、net2x和net3x都非常旧(net40和net45也是如此),所以软件包很少再为这些旧版本提供dll了。然而,log4net1.2.11发布于2011年,当时这些较旧的tfm可能仍然很常见,值得为其提供兼容性。
您正在使用的项目具有不存在的HintPath的原因有多种可能。根据您目前提供的信息,听起来可能是有人手动编辑了csproj,或者是有人创建了自己的log4netv1.2.11nuget包,该包的dll位于与上的包不同的位置nuget.org网站. NuGet包被设计成不可变的,这意味着从任何其他NuGet提要下载具有特定包id(name)和包版本的nupkg应该与具有相同包id+版本的所有其他nupkg相同。否则,当NuGet从与安装包的人不同的源恢复包时,可能会出现生成错误。 最后,努吉packages.config文件不是为手动编辑而设计的。不应编辑和保存packages.config文件在csproj中自己归档或引用或HintPath。使用NuGet Package Manager UI或Package Manager控制台安装、卸载和升级包。在NuGet客户机中有很多逻辑,不仅仅是资产选择,如果包使用特定的特性,那么您将出错。
在visualstudio2017中,NuGet添加了一种引用包的新方法,称为PackageReference。您可能需要转到“工具”->“选项”,找到NuGet包管理器->常规,然后更改默认包管理格式或启用“首次安装包时允许格式选择”。它还可以右键单击许多项目类型,并有一个迁移到PackageReference的选项,但这并不是针对所有项目类型(主要是ASP.NET). PackageReference不支持某些功能packages.config文件支持,某些项目类型也不支持PackageReference。但在最常见的情况下,它是受支持的,如果您可以使用它,它有几个优点,包括不再在csproj中放置提示路径,并避免您当前遇到的特定问题(在restore NuGet时写入一个文件)
哇,我漫无目的地闲逛了很久。我希望这不仅仅是让你困惑。 |
|
|
jvoigt · Log4net文件滚动文件不删除旧文件 8 年前 |
|
|
War · WPF应用程序中的Log4Net设置 8 年前 |
|
Kamsiinov · Log4net没有记录任何内容 8 年前 |
|
|
Aamir · 如果服务连续运行数天,如何每天创建新的log4net 8 年前 |
|
|
rkralston · 另一个记录器中的.Net核心ELMAH功能? 8 年前 |