使用Nuget在传统VS项目中获取特定版本的库

时间:2016-03-19 12:34:06

标签: .net nuget

我是java程序员,最近我必须处理.NET项目。实际上,我想使用与MIGHTY Maven管理项目中的依赖项相同的方式,我发现有一个Nuget工具可以做同样的事情。但我的问题是如何根据.NET项目文件中的内容获取确切的库版本及其相关的依赖项。不知怎的,我发现Nuget可以找到依赖项并将它们添加为项目的引用。问题是,在某些情况下,我想添加EnterproseLibrary版本5,包括公共,日志记录,异常处理,数据和统一。我得到了一切,但它在一些名称空间中有错误,应由Nuget添加,如下所示: Microsoft.Practices.EnterpriseLibrary.Logging.Database

我还注意到,如果我想获得企业图书馆的第5版,我应该使用EntLibContrib而不是EnterpriseLibrary,这完全令人困惑。如果我想添加Data namespace,我应该在Nuget中使用EnterpriseLibrary的第6版。因为在版本5中我只找到:以下内容:

EntLibContrib.Data.MySql EntLibContrib.Data.OdpNet

我搜索过多,特别是官方的nuget文档,我真的厌倦了所有的.NET。我需要为Nuget或.Net中的所有其他存储库,包和构建管理提供一个很好的参考。

更新

例如,我在csproject文件中有以下参考:

<Reference Include="Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\BinaryReferences\Microsoft.Practices.EnterpriseLibrary.Logging.dll</HintPath>
</Reference>

我知道每个库的版本,我想将它们作为Nuget格式添加到package.config文件中以恢复它们。我想使用Nuget来构建,打包和部署,而不是在Visual Studio中构建项目的传统方式。

我以java为例,我们可以使用mvnrepository找到我们想要的每个版本的库,并在我们的pom.xml文件中使用它。在.NET中我不知道如何找到库的确切版本并在Nuget package.config / json文件中解决它。

阅读其文档两天后,我对其功能和powershell命令了解得足够多。我只是想知道,有没有办法找到基于其命名空间的库版本,就像我每天都使用maven存储库一样。或者我对Nuget的期望太高了。

2 个答案:

答案 0 :(得分:0)

您能否澄清一下究竟是什么问题? 您可以在项目中引用特定的nuget包版本。 您将选择的版本取决于您需要的功能,以及您希望获得的包中的库的版本。 您可以使用程序包管理器控制台安装特定版本的NuGet程序包。 确切的结构包实际上有所不同,具体取决于您使用的package source,但是每个包都描述了它的依赖关系 - 请阅读nuspec,这样您就可以确切知道自己得到了什么。 将包添加到项目后,您将看到package.config,其中您实际指定了包版本和目标框架

<package id="NSubstitute" version="1.9.2.0" targetFramework="net46" />

如果您不确定选择哪个软件包版本,您可以随时查看内容并查看确切包含的程序集,这应该在nuget.org上进行描述,但如果您使用的是其他来源,则可以随时解压缩nupkg文件,或使用NuGetPackage Explorer

答案 1 :(得分:0)

要为企业数据块版本5安装nuget包,您需要在nugey包管理器控制台中运行以下命令 - (more details

Install-Package EnterpriseLibrary.Data -Version 5.0.505

EntLibContrib完全不是企业库,但它是在它之上的扩展。有关详细信息,请参阅this