gpt4 book ai didi

scripting - 使用 .NetCore RC2 自动化 Nuget 包推送

转载 作者:行者123 更新时间:2023-12-01 09:51:03 24 4
gpt4 key购买 nike

我目前正在开发一个 .NET Core 库,我将在另一个项目中将其用作 NuGet 包。

我已经能够在项目目录中使用“dotnet pack”命令成功打包项目,并将该包上传到MyGet。

我希望通过使用“nuget push”命令来自动化推送 NuGet 包的过程。

我的问题是 project.json 文件中定义的“脚本”属性似乎没有在打包或构建时执行。我希望这些脚本会在相应事件发生时执行,但它们似乎没有任何效果,因为我在构建时没有看到任何输出到控制台,无论有无详细标签。

我了解 MyGet 能够更新基于 Git 存储库的包提要,但我想了解执行当前使用 project.json 的脚本是否存在问题。理想情况下,我想在打包成功执行后使用 nuget push 命令。

这是我的 project.json 文件:

{
"version": "0.0.1",
"scripts": {
"postbuild": [ "echo build" ],
"prebuild": "echo build",
"postpack": "echo build",
"postpublish": "echo build",
"postrestore": "echo build",
"prepack": "echo build",
"prepare": "echo build",
"prepublish": "echo build",
"prerestore": "echo build"
},

"dependencies": {
"NETStandard.Library": "1.5.0-rc2-24027"
},

"frameworks": {
"netstandard1.5": {
}
},
"buildOptions": {
"allowUnsafe": false,
"debugType": "portable",
"emitEntryPoint": false,
"xmlDoc": false
},
"commands": { },
"packOptions": {
"files": {
"include": "%project:Directory%/bin/release/*.nupkg"
}
},
"configurations": {
"Debug": {
"buildOptions": {
"define": [ "DEBUG", "TRACE" ]
}
},
"Release": {
"buildOptions": {
"define": [ ]
}

}
}

}

最佳答案

RC2 将 prebuild 和 postbuild 替换为 precompile 和 postcompile。

您可以使用 postcompile 自动生成 nupkg 并使用将包推送到 nuget 服务器

"scripts": {
"postcompile": [
"dotnet pack --no-build",
"\"%project:Directory%\\..\\..\\nuget.exe\" push \"%project:Directory%\\bin\\%compile:Configuration%\\%project:Name%.%project:Version%.nupkg\" -source nugetserver -ApiKey key"
]
}

这将使用项目目录中存在的 project.json 文件自动调用 dotnet 包。然后它将nuget包推送到指定的nuget服务器。

很遗憾,没有指定构建配置的变量,因此在上述路径中,当您在调试和发布配置之间切换时,您必须手动更改它。

上面使用 %compile:Configuration% 来指定当前的构建配置。

当前构建配置的答案来自 How to run scripts based on solution configuration in ASP.NET Core RC2

Visual Studio 2017

在 Visual Studio 2017 中,您可以通过编辑 csproj 文件并使用以下命令来使用 dotnet nuget push 命令

<Target Name="PushPackage" AfterTargets="Pack">
<Exec Command="dotnet nuget push &quot;$(MSBuildProjectDirectory)\bin\$(Configuration)\$(AssemblyName).$(Version).nupkg&quot; -s nugetserver -k apikey" />
</Target>

关于scripting - 使用 .NetCore RC2 自动化 Nuget 包推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380716/

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