【问题标题】:How to install packages to Scrip folder如何将软件包安装到 Scrip 文件夹
【发布时间】:2019-01-21 20:51:47
【问题描述】:

我在 Azure DevOps 中有我的应用程序(Apache Cordova 工具)。我想在 Azure DevOps 中构建应用程序。我添加了 NuGet 工具安装程序和 NuGet 还原任务。

但 NuGet 只恢复任务并将文件放在包文件夹中(例如 AngularJs)。

在 Microsoft Visual Studio 中,我在包管理器控制台中使用 Update-Package -reinstall 命令将文件放入“脚本”文件夹。并且这些文件被其他 ts 文件引用。

如何将命令 Update-Package -reinstall 重写为 Azure DevOps 任务?

我尝试使用命令安装添加 NuGet 自定义任务。即使没有找到包,它也可以正常工作。

更新:

packages and scripts have different hierarchy

【问题讨论】:

  • 你是说你想让 azure 将包 lib/ 解压到你的项目 scripts/ 目录吗?
  • 是的,没错。我想在包管理器控制台中执行 Update-Package -reinstall 命令。因为包文件夹具有名称为版本的子文件夹。所以我无法在我的类型脚本文件中正确引用。在脚本文件夹的对面,我有正确的层次结构。当然我可以在存储库中提交脚本文件夹,但是有自动生成的文件,所以我更喜欢在 Azure DevOps 的构建过程中保持它自动生成。
  • 您是在项目中使用包引用语法,还是使用 packages.config 文件?另外,当您说custom task with command install. it's working without error... 时,我不确定我理解您的意思是不是使用 install 命令的自定义 nuget 任务没有按预期工作?
  • 我使用 packages.config。在“带有命令安装的自定义任务。它可以正常工作......”我的意思是接下来我添加了 NuGet 任务并在命令下拉列表中选择了自定义。为命令和参数字段设置“安装”。当我运行构建时,我不会在此任务中遇到错误。全是绿色的。我正在查看日志,似乎找不到我的项目。
  • 这是 .net 核心还是标准项目?也许使用 dotnet build 任务(它在 sdk 2.x 上进行隐式恢复)会让你得到你正在寻找的行为。您能否使用构建管道任务的屏幕截图更新您的问题?

标签: azure-devops nuget-package azure-pipelines visual-studio-cordova


【解决方案1】:

如何将命令 Update-Package -reinstall 重写为 Azure DevOps 任务?

首先,您不能使用此命令行Update-Package -reinstall 执行 Azure DevOps 任务。那是因为包管理器控制台提供的是对 visual studio 对象的访问:

https://github.com/NuGet/Home/issues/1512

因此,我们无法在 Visual Studio 之外使用包管理器控制台 powershell。

如何将软件包安装到 Scrip 文件夹

由于 nuget restore 任务仅恢复包目录(\packages 文件夹)中的文件,但不会恢复项目中的文件或以其他方式修改您的项目。我们必须手动将那些.js 复制到/scripts 文件夹中。

要解决此问题,我们可以在 nuget 还原后将复制任务添加到 Azure DevOps,以将这些文件从 /packages 文件夹复制到 /scripts 文件夹。或者您可以将这些 .js 添加到源代码管理中。

此外,不鼓励将 NuGet 用于 css/javascript 库。您应该使用 npm(节点包管理器)添加 JavaScript 库,而不是使用 NuGet。

Nuget Problems Downloading Scripts

如果您有兴趣,请参阅this documentthis document 了解更多详情。

希望这会有所帮助。

【讨论】:

  • 当用户使用 nuget 管理 javascript 包时,Azure DevOps 是否不支持 case?
  • 不,nuget 在处理 .js 类型的包时没有优势,但你仍然可以使用它。就像您遇到的问题一样,我们需要添加额外的复制步骤。我们可以使用 npm 任务,Azure DevOps 也支持 npm 任务。
  • @Pavel,另外,你想把什么文件放到“scripts”文件夹,你应该“安装”nuget包,但是“安装”需要访问visual studio对象,否则,nuget可以不修改项目文件。这就是您的问题的原因,因此我们无法直接在 Azure DevOps 上使用 nuget 任务将文件放入“脚本”文件夹,需要手动复制或将它们添加到源代码管理中。希望你能更清楚地理解这个问题。愉快的一天。
  • 谢谢@Leo Liu-MSFT 是的,我想我更清楚地理解了问题。我希望,将来会创建任务
  • 我决定使用解决方法并将 js 文件从脚本文件夹提交到存储库。它现在正在工作,我现在没有阻止问题。谢谢 Leo 和 Josh。
【解决方案2】:

在 NuGet 任务中,您可以按“高级”并指定将在其中下载包的文件夹,因此在此处键入“脚本”文件夹路径。

【讨论】:

  • 文件夹脚本中的这种情况将像文件夹包中的层次结构一样。所以不像在存储库中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 2013-07-06
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
相关资源
最近更新 更多