Nuget私有库搭建 打包依赖问题

Posted jalanwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nuget私有库搭建 打包依赖问题相关的知识,希望对你有一定的参考价值。

之前就有在公司做私有库的搭建:

1、直接写个bat 命令,在VS中配制菜单,可在项目上右键发布。(网上很多这种教程)

  1.1 版本号问题无语

  1.2 项目多了也是无语

2、之前的技术群友推荐用了一个工具NuPack的VS插件

  可能是我太菜,不太会用,还是觉得麻烦,项目多了,一起打包累

3、就是脚本了,这个方便,快,还打包的全

看了很多网上的资料,就第三种最好用,小改一下就能通吃

网上遇到最多的问题就是 打包后 没有把依赖也一起打包,这就是个坑 我找了很久,被自己蠢屎,还是要多看官网文档。

就是看了这篇文档,什么事都解决了:https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack

 

我的思路是这样的:

A、先把所有项目release编译 来一波 脚本 build-all.ps1

# COMMON PATHS
$rootFolder = (Get-Item -Path "./" -Verbose).FullName

# List of solutions
#要编译的文件目录列表,也可以是根目录
$solutionPaths = (
    "framework",
    "modules/users",
    "modules/permission-management"
)

# Build all solutions

foreach ($solutionPath in $solutionPaths) {    
    $solutionAbsPath = (Join-Path $rootFolder $solutionPath)
    Set-Location $solutionAbsPath
    #release 
    dotnet build -c release
    if (-Not $?) {
        Write-Host ("Build failed for the solution: " + $solutionPath)
    }
}

Set-Location $rootFolder
pause

 

B、再生成Nuget包 并推送

# COMMON PATHS

$rootFolder = (Get-Item -Path "./" -Verbose).FullName
#定义当前发布包版本号
$version = "1.0.0.1"

# List of solutions

$solutionPaths = (
    "framework",
    "modules/users"
)

# Build all solutions

foreach ($solutionPath in $solutionPaths) {    
    $solutionAbsPath = (Join-Path $rootFolder $solutionPath)
    Set-Location $solutionAbsPath
    #查找所有*.csproj文件 并遍历
    Get-ChildItem -Path $solutionAbsPath -Include *.csproj -Recurse |`
    foreach{
        $Item = $_
        $Path = $_.FullName
        $ParentS = ($_.Fullname).split("")
        $Parent = $ParentS[@($ParentS.Length - 2)]
        $BasePath="E:LocalNuGetNugetConfigPacker"
        #组合发布名文件名
        $FileName = "$BasePathTemp$Parent.$version.nupkg"
        #这里的好戏来了,是 donet pack 不是 nuget pack ,以及后面的命令也不同,参考上面的文档,用这个命令 dotnet pack 就能根据csproj里面拿到包的依赖
     #因为上面已经release了,所以这里不用重复编译
dotnet pack --no-build --no-restore -c release -p:PackageVersion=$version --output "$BasePathTemp" #下面这个也能打包,但是,不能把包依赖打包,也是服,不要用不要用 ##nuget pack $Path -c release -Version $version -OutputDirectory "$BasePathTemp" #下面这里就推送到 私有库 nuget push $FileName "10086" -Source "http://192.168.18.122:10086/nuget" #干完上面的事,就从临时文件夹移出来 move $FileName $BasePath if (-Not $?) { Write-Host ("Build failed for the solution: " + $solutionPath) Set-Location $rootFolder exit $LASTEXITCODE } } } Set-Location $rootFolder pause

以上两步为什么不放在一起,而要分开两步呢?

嗨,大家试下就知道,两步放一起项目多的话 要多久了,反正我一百多个项目打包放一起一个下午没了 才跑完,分开跑快的不是一点半点

先留记录在这里 备忘!

以上是关于Nuget私有库搭建 打包依赖问题的主要内容,如果未能解决你的问题,请参考以下文章

使用Nexus搭建私有Nuget仓库

使用 baget 搭建 nuget 私有服务

Google Cloud 构建和私有 Nuget 存储库

基于微软开发平台构建和使用私有NuGet托管库

nuget服务器搭建,以及如何发布一个Nuget包

Nuget私有服务搭建实战