V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
89ao
V2EX  ›  .NET

nuget cli 真是毒瘤啊,没见过这么难用的包管理工具

  •  
  •   89ao · 314 天前 · 2669 次点击
    这是一个创建于 314 天前的主题,其中的信息可能已经有所发展或是发生改变。
    当然可能是搂住孤陋寡闻,但用了那么多包管理工具之下真的发现
    在命令行下体验最差的就是微软做的东西
    同时在这中间 nuget 客户端是最毒瘤的
    命令提供的功能有限不说,使用方法奇奇怪怪,完全不遵循 linux 规范
    就为配个源拨测用例,我跟 GPT 俩搞一下午了还各种报错
    log 里面完全无法判断出来是 server 有问题还是我本地使用有问题
    举个例子:
    我就要简单的指定仓库,下载一个依赖,然后删除它,结果安装完了之后:
    nuget delete 居然试图从上游仓库里面删除(要求认证)
    这不是反直觉的吗?


    想了下,还是因为开发是直接移植 powershell 的原因吧
    但这个体验,真的糟心啊……

    知道吐槽也没有用,仅宣泄一下憋屈的心情。


    另有 nuget 专家可以帮指导下哈:
    1. nuget v3 是否和 v2 完全不兼容?
    2. 有没有目前可用的 v2 仓库?
    18 条回复    2023-06-19 21:30:39 +08:00
    a33291
        1
    a33291  
       314 天前
    再加一个,最新版要求你的 source 必须是 https,我 tm 内网自建需要啥 https,还不给选项禁用
    Cloudust
        2
    Cloudust  
       314 天前
    @a33291 #1 这个也太难受了吧,我这也是自建 http ,不过我很久没更新了...
    idealhs
        3
    idealhs  
       314 天前
    用 GUI 吧,仅仅是开发的话 VS 和 Rider 都挺正常使用的。
    89ao
        4
    89ao  
    OP
       314 天前
    @idealhs 我这里也是公司自建,所以需要拨测服务正常性哈
    wanmyj
        5
    wanmyj  
       314 天前
    > 完全不遵循 linux 规范
    看到这段笑出声,估计下辈子都看不到微软会做这样的事

    nuget v3 是否和 v2 完全不兼容?
    不一定解决你的问题。我的使用经验,nuget 不同版本给我感觉共用一个仓库,不是完全不兼容,但使用中又觉得很诡异。如果某个包里只有 NetCore 的版本,那 nuget v2 是不行的,最起码较早的 v2 是无法下载的。v3 好像也无法下载一些只支持 net standard 的包<------这句存疑
    thinkershare
        6
    thinkershare  
       314 天前
    你整个问题我都无力吐槽,NuGet 是我用过的所有包管理里面最好用了,没要之一。
    mooyo
        7
    mooyo  
       314 天前
    我觉得 nuget 都还好,csproj 是真抽象阿。
    89ao
        8
    89ao  
    OP
       314 天前
    @wanmyj 对的,似乎同一套仓库只能同时支持 v2 或者 v3 中的一个
    89ao
        9
    89ao  
    OP
       314 天前
    @thinkershare 来分享一下依据或者经验
    rwecho
        10
    rwecho  
       313 天前
    我开发 c#的竟然搞不懂你想干啥, 命令行不都是 dotnet add package xxxx 吗?

    指定仓库 应该在 项目项目下面 创建一个 Nuget.Config 里面添加源.
    如果是自建仓库, 使用 baget
    nikenidage1
        11
    nikenidage1  
       313 天前
    确实,不算好用,只能说是能用,没啥大问题
    forgottencoast
        12
    forgottencoast  
       313 天前
    没用过这东西,根据这个链接:
    https://learn.microsoft.com/en-us/nuget/reference/nuget-exe-cli-reference
    它是以前.Net Framework 的产物啊,在 Linux 下难用不是正常的吗,估计开发的时候就没有考虑过在 Linux 下运行的场景。

    如 10#所言,现在早就不用这个了。
    agagega
        13
    agagega  
       313 天前
    以前用 Visual Studio 写过 ASP.NET 的项目,功能层级的复杂先不说了,微软那些「企业级」术语加上微软式翻译真的看得人都麻了,是不是企业级的玩意都得要把简单的东西(从语言上)复杂化
    tin3w5
        14
    tin3w5  
       313 天前 via iPhone
    你指望微软的东西能遵守 posix 标准、Linux 规范?开什么玩笑,微软如果不是因为发现 cmd 实在太烂了、又有大量来自客户侧的企业级命令行需求,他能搞 powershell ?估计把 cmd 砍了都是正常操作。
    印象中自从微软的产品设计变成印度人之后,东西就不好用了。
    thinkershare
        15
    thinkershare  
       313 天前
    @89ao 请先吧你的需求写清楚,一上来就这对自己不了解的东西发表吐槽,我只能这么回复你了。
    微软的文档写的非常详细,虽然中文基本也是机器翻译,但该有的都有。
    自定义仓库事件非常简单的事情,半个小时搞定,想要别人给你解决方案的时候,麻烦将自己的需求搞清楚。
    https://learn.microsoft.com/zh-cn/nuget/hosting-packages/overview
    https://learn.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-package
    irytu
        16
    irytu  
       313 天前 via Android
    确实 记得当时抱着很大期待加入微软 没几天就被这些垃圾给恶心到了 是我半年内选择离职的一大原因。。
    89ao
        17
    89ao  
    OP
       311 天前
    @rwecho 感谢分享,baget 这个东西看起来不错,我学习一下
    hez2010
        18
    hez2010  
       303 天前
    很简单,因为 nuget 客户端本身就是用来操作上游包仓库的客户端。
    你要是想找包管理器的话,那你需要的不是那个 nuget.exe ,而是 dotnet add package/dotnet remove package ,以及 dotnet nuget 命令。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3683 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:37 · PVG 18:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.