zoukankan      html  css  js  c++  java
  • windows系统下搭建私有nuget仓储服务器, 打包程序集并推送到私有nuget仓储服务器

    一. 搭建私有nuget仓储服务器

    1. 使用Visual Studio创建Web Application项目, .NET Framework选择4.6.1, 空Web项目

    2. 安装私有nuget仓储服务器相关包文件

    请在程序包管理器控制台中执行 Install-Package nuget.server, 等待完成

    3. 修改Web.config配置文件

    a. 在system.web节点下, 如果有多个compilation节点, 仅保留targetFramework="4.6.1"的节点, 其他的请删除;

    b. 在system.webServer的handlers节点, 只保留verb="GET,HEAD,POST,PUT,DEBUG"的"ExtensionlessUrlHandler-Integrated-4.0"项, 其他的"ExtensionlessUrlHandler-Integrated-4.0"项请删除

    1 <handlers>
    2     <remove name="OPTIONSVerbHandler" />
    3     <remove name="TRACEVerbHandler" />
    4     <remove name="WebDAV" />
    5     <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    6     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,PUT,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    7 </handlers>

    c. 设置appSettings节点中的apiKey值, 这个是私有nuget仓储服务器的密钥, 请自己设置

    d. 建议将appSettings节点中的allowOverrideExistingPackageOnPush设置为true, ignoreSymbolsPackages设置为false

     

    二. 创建目标解决方案

    这个是你实际的项目, 省略.

    项目目录结构图:

    二. 打包程序集

      这里我使用powershell脚本方式. 在你的解决方案文件所在目录下创建一个nupkg的目录, 然后在这个目录下创建一个名为pack.ps1的powershell脚本文件, 文件内容如下

    # Paths
    $packFolder = (Get-Item -Path "./" -Verbose).FullName
    $slnPath = Join-Path $packFolder "../"
    $srcPath = Join-Path $slnPath "src"
    
    # List of projects
    $projects = (    
        "MyNugetServer"    
    )
    
    # Copy all nuget packages to the pack folder
    foreach($project in $projects) {
        
        $projectFolder = Join-Path $srcPath $project
        $projectFileName = $project + ".csproj"
        Set-Location $projectFolder
    
        Remove-Item -Recurse (Join-Path $projectFolder "bin/Release")  
        nuget pack $projectFileName -Build -Prop Configuration=Release -OutputDirectory .inRelease
        
        # Copy nuget package
        $projectPackPath = Join-Path $projectFolder ("/bin/Release/" + $project + ".*.nupkg")
        Move-Item $projectPackPath $packFolder -Force
    }
    
    # Go back to the pack folder
    Set-Location $packFolder

     打开powershell ISE, 转到pakc.ps1文件所在目录, 然后输入./pack.ps1即可开始执行打包任务

    三. 将打包好的包文件推送到私有nuget仓储服务器

      这里我使用powershell脚本方式. 在你的解决方案文件所在目录下创建一个nupkg的目录, 然后在这个目录下创建一个名为push.ps1的powershell脚本文件, 文件内容如下 

    # Paths
    $nupkgFiles = (Get-Item *.nupkg).FullName
    
    # Copy all nuget packages to the pack folder
    foreach($nupkgFile in $nupkgFiles) {
        nuget push $nupkgFile -Source http://127.0.0.1/nuget -ApiKey 12345qwert
        Remove-Item $nupkgFile
    }

      其中设置的apiKey, 请替换成你自己在第一步中设置的值.

      打开powershell ISE, 转到push.ps1文件所在目录, 然后输入./push.ps1即可将你的包文件推送到私有nuget仓储服务器

    四. 其他

      1. 目录结构不一定要和我的完全一致, 只要你自己的项目目录结构与powershell脚本中的规则一致. 如果你不清楚, 还是根据我的目录结构来吧. 特别要注意的是解决方案文件(sln)的路径, 我是放在项目根目录下的

      2. 描述的不是特别清楚, 如果你有疑问, 请在评论里提出

  • 相关阅读:
    LC 216. Combination Sum III
    基本数据类型及其包装类(二)
    基本数据类型及其包装类(一)
    访问权限控制
    关于类的对象创建与初始化
    垃圾收集机制与内存分配策略
    虚拟机字节码执行引擎
    虚拟机类加载机制
    字节码文件的内部结构之谜
    数值信息的机器级存储
  • 原文地址:https://www.cnblogs.com/oxsir/p/create-a-private-nuget-repository-server_package-and-push-it.html
Copyright © 2011-2022 走看看