.Net Core 2.0“在构建时生成 Nuget 包”问题以及构建后事件

2024-02-15

The new .NET Core 2.0 projects provide and easy and convenient way to create Nuget Package from the project output. Just click on the "Generate Nuget package on build" check box and it is done. enter image description here It works fine but I have an issue with Post-build events. I want to copy all of the packages from a solution after each build to a specific folder. So I use the "Post-build event command line" with a script:

xcopy "$(ProjectDir)$(OutDir)..*.nupkg" "$(SolutionDir)..\WebServicePracticesNuget\" /Y /I

有时它工作得很好,有时却根本不起作用。到目前为止,我的调查得出的结论是,Nuget 包的创建不是构建过程本身的一部分。因此脚本(有时)会在包生成之前触发,并且是不可预测的。我的解决方案是增加一些延迟。很遗憾 ”超时x" 不适用于构建后事件。所以我使用了后备选项:

ping 127.0.0.1 -n 4 > NUL

这使得它几乎可靠(〜95%),但我认为这是“穷人”的解决方案。在构建后事件脚本中看起来很荒谬。我已经reported https://developercommunity.visualstudio.com/content/problem/157079/generate-nuget-package-on-build-issue-with-post-bu.html这个问题交给VS团队。但到目前为止还没有太多评论或解决方案。

所以我的问题是:有人有同样的问题吗?或者有比我现在更好的解决方案的想法吗? 谢谢。


The GeneratePackageOnBuild功能执行Pack之后的目标Build因此构建后事件可能会在创建 NuGet 包之前运行。在 VS 15.3+ 中,当您创建构建后事件时,它将创建一个Target项目文件中的元素。您可以更改AfterTargets其属性为AfterTargets="Pack"在打包后运行,而不是在核心 .net 构建后运行。但这是一种有点脆弱的方法。

包目标将尊重PackageOutputPathmsbuild属性,这是什么dotnet pack's --output参数将被设置。

Since xcopy仅适用于 Windows,最通用的解决方案是使用 msbuild 在构建过程中设置属性。

例如你可以放一个Directory.Build.props文件位于解决方案文件(所有项目上方的目录)旁边,内容如下:

<Project>
  <PropertyGroup>
    <PackageOutputPath>$(MSBuildThisFileDirectory)nupkgs</PackageOutputPath>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>
</Project>

该文件将自动导入到该文件下的目录层次结构中的所有项目文件中,并设置生成的目标目录.nupkg文件到名为的文件夹nupkgs旁边的Directory.Build.props文件。它还为所有支持它的项目(“基于 sdk”的项目,如 .net 标准/.net 核心库)启用“生成包构建”功能,因此您不必在 VS 中进行设置或编辑所有项目文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net Core 2.0“在构建时生成 Nuget 包”问题以及构建后事件 的相关文章

  • 使用 dotnet pack 打包多个程序集

    正如问题所说 如何使用 dotnet pack 打包多个项目 程序集 使用 VS2017 和新的 csproj 文件 在 csproj 文件中包含您需要的程序集
  • 通过开源 PCL 使用 API 查看 3D 点云

    我使用 ToF 飞行时间 相机来获取 XYZ 格式的深度数据 为了实现 3D 点云的可视化目的 我想使用开源 PCL 提供的 API 网址为http pointclouds org documentation tutorials pcl v
  • EF Core 创建多个外键列

    我将 EF Core 与 NET Core 3 1 结合使用 我有一个客户端 事件关系的简单示例 public class BaseEntity Key Required DatabaseGenerated DatabaseGenerate
  • Powershell 软件包丢失/无法在发布时运行

    我有一个控制台应用程序项目 我在其中使用 powershell SDK 它在调试中工作得很好 但在发布时 除了 powershell 之外的所有内容都可以工作 我发现它起作用的唯一设置是在将项目发布为依赖于框架和可移植的项目时 或者至少它可
  • 如何通过其偏移量访问私有数据私有成员?

    我正在尝试按偏移量访问和修改类的私有数据成员 AFAIK 首先是计算偏移量 然后通过偏移量访问成员 这是我的代码 class Test public int a int b private int c Test test cout lt l
  • Visual Studio - X11:缺少 DISPLAY 环境变量

    我正在使用 Visual Studio 2019 Enterprise 开发跨平台 Windows Linux x64 GUI 应用程序 在这个 2019 版本中 我们可以使用 Visual Studio调试平台 Windows 本机 和
  • 使用 ReactJS SPA 在 .net Core 中进行身份验证

    我尝试向 net Core 2 1 应用程序添加身份验证 从头开始 我们可以使用 VS 模板通过 React 创建新的 Web 应用程序 在这个模板中我们可以看到 app UseSpa spa gt spa Options SourcePa
  • 在 VS Toolbox 中安装自定义控件

    我们公司提供安装 Inno Setup 的第三方组件 我们用VS套餐自动将我们的组件放入 Visual Studio Toolbox 中 但有时会失败 VS 包还需要一些名为 包加载密钥 尽管我们对其进行了测试 但 Visual Studi
  • 如何选择一个按钮作为表单的默认按钮

    我有一个表单 它接受用户输入 然后让用户连接到 SQL Server This is happening on Button Click But where can I set the property Default button so
  • 在 Visual Studio 2010 Beta 1 之后安装 Visual Studio 2008 TS

    我最近安装了 Visual Studio Professional 2010 Beta 1 并注意到大多数安装目录都独立于 共享 目录 我安装了 Visual Studio C 2008 Express 没有发现任何冲突 如果我安装 VS
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何在 Visual Studio 2017 中打开 dotnet-core CLI 项目

    我一直在使用 dotnet Core 用于 API 和 Angular2 开发一个简单的应用程序 以便学习两者 我在命令行上使用 Yeoman 创建了项目并且一直在 Visual Studio Code 在 Windows 上 中愉快地进行
  • Visual Studio 插件开发第一步

    我想为 Visual Studio 制作一个插件 但我不知道从哪里开始 虽然找到 Eclipse 插件开发指南非常容易 但我很难找到好的 VS 插件开发指南 我想我想问的是 我从哪里开始 我建议从这里开始 http www mztools
  • 如何使用 .NET Core 解析 MPEG 视频流

    对于个人项目 我尝试读取 IP 摄像机的 MPEG 流 并对收到的各个帧执行一些计算机视觉任务 使用 NET Core 2 2 我执行一个GET向相机的 MPEG 端点发出请求 我收到一个multipart x mixed replace响
  • 使用 C# 和 .NET Core 在 AWS Cognito 用户池中进行用户管理

    如何使用 C 和 NET Core 3 x 管理 AWS Cognito 用户池中的用户 在文档中找不到有关它的任何内容 Attilio Gelosa 的原创文章 我写这篇文章是希望对其他人有帮助 我必须阅读一页又一页的文档 并从 AWS
  • 无法使用 IIS Express 在 VS2017 中加载文件或程序集

    我们公司有一个 ASP NET 项目 为 5 6 的开发人员运行 所有 Visual Studio 2017 和 IIS Express 上的调试 没有疯狂的设置或任何让它运行的东西 1 位同事无法使其正常工作 他总是遇到以下异常 几个月前
  • 编辑并继续不起作用

    我正在尝试进行托管编辑并继续工作 在 Visual Studio 2015 v14 0 25425 01 update 3 中 它给了我可怕的对话框 以下情况不允许变更 附加到不支持附加时编辑并继续的进程 我在 Windows 10 0 1
  • 如何降低 Visual Studio 构建进程优先级以防止系统无响应?

    我们定期使用 Visual Studio 2013 编译大型 C 项目 在开发人员机器上构建源代码最多可能需要 45 分钟 在此期间 机器经常因CPU负载100 而变得无响应 有没有办法告诉 Visual Studio 以较低的进程优先级运
  • CMake“无法运行 MSBUILD.exe”命令错误

    当我想为 opencv 3 3 0 创建 Visual Studio 15 2017 make 文件时 它给了我以下错误消息 error in configuration process project files maybe invali
  • 如何为 Visual Studio 命令提示符创建批处理文件

    我想创建一个批处理文件Visual Studio 2008 x64 Cross Tools Command Prompt要在我的电脑上连续执行某些操作 场景如下 svn update delete some files MSBuild My

随机推荐