Asp.net core 在vnext中管理依赖项

Asp.net core 在vnext中管理依赖项,asp.net-core,Asp.net Core,在我工作的公司,当我们在项目中需要参考第三方DLL时,我们会执行以下操作: 使用nuget获取包 拉出dll并创建一个“lib”文件夹,并在此处添加引用 这个lib文件夹被添加到git中,以便其他团队成员在从git执行拉取操作时拥有所有引用 引用dll存储在我们项目的lib文件夹中 我们这样做是为了完全控制并确切知道我们使用的引用 我的问题是,在使用vnext时,这是如何实现的,我们可以继续这样做吗 观看了“介绍:服务器上.NET的未来”,您似乎在project.json文件中列出了所有依赖项,

在我工作的公司,当我们在项目中需要参考第三方DLL时,我们会执行以下操作:

  • 使用nuget获取包
  • 拉出dll并创建一个“lib”文件夹,并在此处添加引用
  • 这个lib文件夹被添加到git中,以便其他团队成员在从git执行拉取操作时拥有所有引用
  • 引用dll存储在我们项目的lib文件夹中
  • 我们这样做是为了完全控制并确切知道我们使用的引用

    我的问题是,在使用vnext时,这是如何实现的,我们可以继续这样做吗


    观看了“介绍:服务器上.NET的未来”,您似乎在project.json文件中列出了所有依赖项,当您执行k restore时,它将根据nuget配置文件中的提要下载所有依赖项,您将使用
    project.json
    文件。正如您提到的,您在其中列出了所有依赖项,K包管理器将为您解决丢失的包

    您会注意到,在json文件中,您在某种程度上用
    package:version
    的键值对指定了包。大多数示例显示了
    *
    的一个版本,这意味着获取最新信息。但是没有什么可以阻止您指定特定的版本或版本的特定部分。例如,指定Autofac的特定版本:

    "dependencies": {
        "Autofac": "3.3.0",
        "Microsoft.Framework.DependencyInjection": ""
    },
    
    指定Microsoft.Framework.ConfigurationModel的某种特定版本:

    "dependencies": {
        "Microsoft.Framework.ConfigurationModel": "1.0.0-*"
    },
    
    这意味着给我最新的1.0.0版本

    该系统允许您根据需要自动获取最新和最好的版本,但也可以指定特定的安全版本。没有理由将DLL复制到自定义库文件夹中

    编辑:是你启发我写博客的:

    只是注意到“-*”不一定返回最新版本。在我的简单测试中,它总是返回可用的最低版本。根据这一点,计算更加复杂,并返回“有效”的最低版本


    编辑:添加文档链接

    在Git中存储二进制文件不是一个很好的做法(在web上搜索有关这方面的文章)。如果希望完全控制自定义包,您可以始终使用自己的自定义包创建myget提要(或仅创建网络共享)。您可以编辑packages.config以指定所需的依赖项的确切版本。