gpt4 book ai didi

c# - 在构建后事件中更新本地 nuget 包

转载 作者:可可西里 更新时间:2023-11-01 08:38:20 24 4
gpt4 key购买 nike

我的本​​地 nuget 库存储库分别用于我的个人和工作相关类库。

我已经为不再开发的库创建了一些 nuget 包。我这样做只是为了他们,因为我不知道如何在我的项目构建后立即自动更新它们。

我认为所有工作都是通过带有 Visual Studio 命令提示符的 nuget 命令行完成的。所以我可以轻松地完成我需要的工作(当然我会非常了解命令,但我不知道!)

基本上,我希望在项目的构建后事件中执行以下任务。

关于项目构建:

  1. 将项目dll复制到特定文件夹(nuget包的lib文件夹)
  2. 为新文件版本更新 nuspec 文件(我的项目在每次构建时都增加文件版本)
  3. 使用新文件版本创建新的 nupkg 文件

Phil Haack 展示了其中的一些功能,但据我所知它仍然是一个原型(prototype)。

所以我的要求就是上面的。还有其他人做到了吗?

最佳答案

所选解决方案看起来可行,但似乎有更简单的解决方案可以满足您的要求。

您可以创建一个 nuspec 文件,该文件将从项目的元数据中读取数据。您只需使用此命令执行一次:

C:\<Path to project>\nuget spec

这会在规范文件中创建“ token ”,当您创建 nuget 包时,这些 token 将被项目的元数据替换。这包括文件版本。您将想要替换 and,因为从技术上讲,所有项目都应该拥有它们。

可在此处找到更多详细信息:http://docs.nuget.org/docs/creating-packages/Creating-and-Publishing-a-Package#From_a_project

然后...

对于 .Net Framework(老派)项目,在项目的构建后事件中,您可以这样做:

nuget pack "$(ProjectPath)"  
xcopy "$(TargetDir)*.nupkg" "<path where you are hosting your local nuget repo>" /C /Y

(假设 nuget.exe 在您的系统 PATH 上可用)。

对于 .Net Core 和 Standard 项目,nuget 无法打包它们(参见 https://github.com/NuGet/Home/issues/4491 )。相反,将其用作构建后步骤:

dotnet pack "$(ProjectPath)" --no-build --include-source --include-symbols --output "<path where you are hosting your local nuget repo>"

当然,您可以调整选项以满足您的需要。参见 https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-pack?tabs=netcore2x对于 dotnet pack命令选项。

关于c# - 在构建后事件中更新本地 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com