当前位置 : 主页 > 网络安全 > 测试自动化 >

脚本 – 使用.NetCore RC2自动化Nuget包推送

来源:互联网 收集:自由互联 发布时间:2021-06-19
我目前正在开发一个.NET Core库,我将在另一个项目中用作NuGet包. 我已经能够使用项目目录中的“dotnet pack”命令成功打包项目,并将该程序包上传到MyGet. 我更喜欢使用“nuget push”命令自动
我目前正在开发一个.NET Core库,我将在另一个项目中用作NuGet包.

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

我更喜欢使用“nuget push”命令自动执行推送NuGet包的过程.

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

我知道MyGet能够基于Git存储库更新包源,但我想了解当前使用project.json执行脚本是否存在问题.理想情况下,我想在pack成功执行后使用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.

您可以使用后编译自动生成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>
网友评论