Visual studio 2013 配置NuGet依赖项和VS2013

Visual studio 2013 配置NuGet依赖项和VS2013,visual-studio-2013,nuget,Visual Studio 2013,Nuget,我希望设置我的NuGet依赖项,以便: 任何检查项目的人(即其他开发人员)都将获得正确的依赖项 任何使用我的软件包的人都将获得正确的依赖项 在VS2013中,我的NuGet依赖项在packages.config中指定 <?xml version="1.0" encoding="utf-8"?> <packages> <package id="log4net" version="2.0.3" targetFramework="net45" /> </p

我希望设置我的NuGet依赖项,以便:

  • 任何检查项目的人(即其他开发人员)都将获得正确的依赖项
  • 任何使用我的软件包的人都将获得正确的依赖项
  • 在VS2013中,我的NuGet依赖项在packages.config中指定

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="log4net" version="2.0.3" targetFramework="net45" />
    </packages>
    
    
    
    我注意到,您还可以在.nuspec文件中指定依赖项(很像maven pom文件),但package manager插件似乎没有使用它

    <dependencies>
      <dependency id="log4net" version="2.0.3"/>
    </dependencies>
    
    
    
    配置依赖项的正确方法是什么?为什么?

    packages.config文件列出了当前为给定项目安装的所有软件包。这包括任何依赖项。当您在项目中添加、更新或删除软件包时,NuGet将通过NuGet UI或软件包管理器控制台(例如安装软件包log4net)自动更新此文件

    NuGet将自动安装给定包的任何依赖项。NuGet还将遵循其他每个包的依赖链,直到安装所有依赖包。它会将这些软件包添加到packages.config文件中,以显示它们已安装。因此,您最初可能安装一个软件包,但最终可能会根据所有依赖项安装10个软件包。同样,这将反映在packages.config文件中,您不应触摸该文件

    您不需要编辑此文件

    更新packages.config的唯一方法是通过NuGet UI或Package Manager控制台安装或更新包。请勿手动编辑此文件

    编辑:添加有关包还原的部分

    NuGet还使用packages.config文件来还原用户硬盘上不存在的包(自动包还原)。这很有用,因为您不必将packages文件夹提交给源代码管理。因此,当其他开发人员签出您的项目时,NuGet将在构建之前自动下载packages.config中列出的任何包。注意:这与安装软件包不同。假设您已经使用NuGet安装该包,该包将更新项目引用、添加文件、修改.config文件等。这些更改应该已经提交。包还原所做的一切就是下载二进制文件,就像它们也被提交一样,而不会使存储库膨胀。包还原主要用于其他开发人员从源代码构建项目。它不适用于安装您创建的包,而.nuspec文件正是用于此目的的

    当您创建自己的包供其他人使用时,将使用.nuspec文件。
    部分列出了您的软件包需要的软件包。当开发人员安装您的包时,NuGet将自动安装.nuspec中列出的任何依赖项。与上面一样,NuGet将通过查看每个packages.nuspec文件来跟踪依赖关系链,以查看它需要哪些依赖关系

    因此,除非您正在创建一个包,否则您不必担心.nuspec文件

    如您所见,NuGet使用每个包中的.nuspec文件来确定是否存在任何依赖项。安装包将更新packages.config文件


    TL;DR:packages.config和.nuspec文件虽然有些关联,但它们是不同的。

    添加了一句话,说您应该只使用NuGet UI或Package Manager控制台编辑packages.config。。。不要手动编辑。很抱歉,还添加了一个关于包还原的部分,因为它在某种程度上适用于您的问题。同样,对于从源代码构建项目的其他开发人员来说,这更重要。不安装您创建的包。