忽略 Azure Pipelines 中 .vdproj 项目的 NuGet 包还原

2024-03-05

我正在尝试针对 .NET Framework 4.7.2 解决方案设置 Azure DevOps 构建管道,该解决方案包含Visual Studio 安装程序项目 https://marketplace.visualstudio.com/items?itemName=visualstudioclient.MicrosoftVisualStudio2017InstallerProjects。我已在 Windows Server 2019 VM 上设置了自托管代理,该 VM 安装了 Visual Studio 2019 Community。构建管道包含 NuGet 安装程序任务,后跟 NuGet 任务,设置用于恢复引用的 NuGet 包。下面是 YAML 片段:

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '$(solution)'

但是,使用此配置运行构建会导致构建日志中出现以下错误:

[错误]nuget 命令失败,退出代码(1) 和错误(C:\##############.vdproj(1,1): 错误 MSB4025: 项目文件无法已加载。根级别的数据无效。第 1 行,位置 1。)

这似乎是由于新版本的 nuget.exe 中的性能增强所致。该建议基于this https://github.com/NuGet/Home/issues/7796#issuecomment-465369065GitHub 问题,是使用以下命令跳过不存在的包目标RestoreUseSkipNonexistentTargetsMSBuild 设置。

GitHub 问题提到使用NUGET_RESTORE_MSBUILD_ARGS NuGet CLI 环境变量 https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-environment-variables为了设置这个属性,但我不知道如何通过NuGet构建任务来实现这一点。

由于 NuGet 现在已与 MSBuild 集成,因此我尝试将此属性设置为false通过 NuGet 任务上的命令行参数。我修改了 YAML,将命令设置为custom为了传递参数。我的语法基于MSBuild 恢复文档 https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#restore-properties。现在看起来如下:

- task: NuGetCommand@2
  inputs:
    command: 'custom'
    arguments: 'restore "$(solution)" -p:RestoreUseSkipNonexistentTargets=false'

此构建配置会导致以下错误:

[错误]nuget 命令失败,退出代码(1) 和错误(未知选项:'-p:RestoreUseSkipNonexistentTargets=false')

我的问题是,如何让 NuGet 恢复任务跳过 .vdproj 项目上的包恢复?

EDIT

该解决方案中的另一个项目是 C# WinForms .NET Framework 项目。我们使用packages.config 而不是PackageReference。


至于你原来的问题:MSB4025

正如您上面提到的,这是一个悬而未决的问题here https://github.com/NuGet/Home/issues/7796。任何对此感兴趣的人都可以在那里跟踪该问题。

[错误]nuget 命令失败,退出代码(1) 和错误(未知 选项:'-p:RestoreUseSkipNonexistentTargets=false')

nuget Restore 命令无法识别 msbuild 属性。查看类似问题和更多详细信息here https://stackoverflow.com/questions/59166166/getting-nu1202-error-when-running-nuget-restore/59169495#59169495.

Since The other project in the solution is a C# WinForms .NET Framework project. We're using packages.config rather than PackageReference.

解决此问题的方法是使用 nuget 自定义命令,如下所示:

- task: NuGetCommand@2
  inputs:
    command: 'custom'
    arguments: 'restore YourProjectName\packages.config -PackagesDirectory $(Build.SourcesDirectory)\packages'

这可以跳过安装程序项目的恢复步骤。

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

忽略 Azure Pipelines 中 .vdproj 项目的 NuGet 包还原 的相关文章

  • MsBuild 在 Visual Studio Online 上找不到恢复的 NuGet 包

    我尝试构建一个存储在 Visual Studio Online 上的外部 GIT 存储库中的解决方案 它有以下步骤 1 Git 恢复 有效 2 NuGet 恢复 有效 3 构建 不起作用 查看日志时我的第一个猜测是 MsBuild 没有查找
  • .Net Core Nuget Package - 将文件复制到包消费者 wwwroot

    我有一个 Net Core 2 2 库项目 该项目包含的所有内容都是一堆静态文件 其中 构建操作 设置为内容 该项目的唯一目的是构建到 Nuget 包中 并让任何消费者将包含的内容添加到他们的wwwroot folder 不幸的是 当查看解
  • MSBuild 命令行 - 添加 dll 引用

    我使用 makefile 来编译我的 C 项目 在这个makefile中 我创建了一个库tools dll 调用csc exe OK 现在 我想在我的项目中使用这个 dll 由于某些原因 我必须使用使用 csproj 文件的 MSBuild
  • TFS 构建 - 部署/包目标未运行

    我们设置了一个 TFS 构建定义 在其中传递以下额外的 MSBuild 参数 p DeployOnBuild true DeployTarget PipelinePreDeployCopyAllFilesToOneFolder Packag
  • 如何在 VS NuGet 包管理器控制台中永久设置新的默认项目?

    我使用的是 VS2012 每次重新打开 VS 时 NuGet 包管理器控制台中的默认项目都已重置为看似任意的项目 我必须使用下拉列表重置为适当的项目 如何为包管理器控制台的默认项目设置 并保留此设置 正如文档中所述here https le
  • VIsual Studio 2022 卡在恢复 Nuget 包上

    我和这里的人有同样的问题 Visual Studio 陷入 恢复解决方案包 的困境 https stackoverflow com questions 63610066 visual studio get stuck on restorin
  • 解决 NuGet 版本冲突

    我正在尝试通过 NuGet 安装更新 Microsoft AspNetCore Mvc 1 1 2 gt 2 0 4 但是 更新永远不会成功 因为在遇到以下冲突后会回滚 Version conflict detected for Micro
  • 如何在 Visual Studio 2013 中使用 NuGet 3.0?

    我有一个混合环境 其中一些开发人员正在使用 Visual Studio 2013 而其他开发人员正在使用 2015 一切都工作正常 直到我们更新了 Visual Studio 2015 中引用的 NuGet 包 现在 当尝试从 Visual
  • 使用 TFS 的每个分支的 Nuget 存储库

    我有一个具有以下分支设置的 TFS 环境 Dev 开发人员的主要工作分支 Main 稳定 可发布的分支 修补程序 用于修复不属于正常发布周期的生产代码 我们正在设置自己使用 Nuget 我想配置一些东西 以便 Dev 分支中的代码从 Dev
  • AzDo 同时拉入 2 个不同的远程/目标分支

    我们有2个分行 Master 发展 Development总是等于Master并部署直到Non Prd环境和功能基于Development分支 因此 当 PRD 中出现错误并需要修复时 我们会在 PRD 之外创建一个新分支Master并将其
  • 将某些项目从一个用户帐户移动到另一个用户帐户

    我要换工作公司 但我会继续从事同样的项目 我在 Azure DevOps 上有一些使用 Git 的项目 还有另一个使用 TFVC 的项目 我使用过这些集成在 Visual Studio 上的源代码控制工具 但从未使用过控制台命令 我想将源代
  • 如何使用 API 和 C# 将文件从 azure DevOps 服务器下载到指定路径

    我正在尝试使用 API 从 azure Devops 服务器下载文件 API 给出了成功响应 但是没有下载任何文件 如果我们删除格式参数 我们将获得带有文件链接的响应 单击该文件不会下载 示例代码 var personalaccesstok
  • 为什么 Visual Studio 2022 在 NuGet 包还原期间不再提示我输入凭据?

    我在 Visual Studio 2022 中有一个 Net Core C 解决方案 它使用多个需要凭据的 NuGet 包 我在尝试恢复 NuGet 包时遇到了凭据 密码不正确的问题 Visual Studio 之前在恢复时提示我输入凭据
  • Nuget - 包管理器控制台的编写工具(自定义 cmdlet)

    我已经安装了 nuget 包管理器 并且我真的很喜欢 mvc scaffold 扩展 我想为我的项目编写类似的工具 有没有我可以学习的 nuget 的 API 参考或文档 TIA 寻求任何建议 编辑 问题已经得到 解答 再次感谢 以下是一些
  • 在project.json .Net Core中本地管理nuget

    我不想依赖 nuget 服务来下载依赖项 我想在我的 Net Core 应用程序中本地下载并使用 nuget 包 是否可以 方法与之前相同 打开您的NuGet config https docs nuget org consume nuge
  • 筛选 NUnit MSBuild 任务的类别?

    我正在设置一个 MSBuild 项目来运行一些 NUnit 测试 使用MSBuild 社区任务项目 http msbuildtasks tigris org 通过这些设置 我将能够运行 NUnit 测试
  • VSTS Build - 根据拉取请求中修改的文件选择运行哪些单元测试

    我想根据触发管道的 PR 中修改的文件来控制 VSTS 构建管道中运行的单元测试 有没有办法检测在为该 PR 触发的 VSTS 构建期间拉取请求中修改了哪些文件 然后根据该信息选择要运行哪些测试 是的 这是可能的 手动方法 一种方法是在管道
  • MS AppCenter 和 Azure DevOps(以前的 VSTS)之间的主要区别是什么?

    我对这两种服务的功能以及它们之间的核心区别是什么感到 有点 困惑 总的来说 我了解它们提供的内容 并且我之前分别使用了它们 主要是 VSTS 作为问题跟踪器 和 AppCenter 来构建和部署源 However 1 他们都有buildin
  • 文件提取失败:在 ExtractFiles@1 中

    我有一个 React js 应用程序 当前为 Azure CI CD 管道设置 突然它在发布阶段开始失败 它正在成功构建 我可以看到在工件中创建的 zip 文件 提取文件任务集在遵循方式 https learn microsoft com
  • 存储库的浅层获取

    我有一个使用模板的 Azure Pipeline yaml 我正在尝试弄清楚如何设置正在克隆的实际存储库的获取深度 resources repositories repository templates type git name DevO

随机推荐