gitlab CI运行程序C#依赖项在MSbuild中全部失败

gitlab CI运行程序C#依赖项在MSbuild中全部失败,c#,visual-studio,gitlab-ci-runner,C#,Visual Studio,Gitlab Ci Runner,我有一个runner(配置了一个轻微的修改),它应该构建和单元测试一个包含ASP.NET核心项目、无JS web前端和单元测试项目的解决方案 但是,当MSbuild尝试生成项目时,每个依赖项都会失败(超过150条错误消息),每个项目中都会出现错误NU1001 这是除了一些非常奇怪的行为-它试图使用visual studio 2012来构建,即使VS 2012从未安装在这台机器上。它还拒绝接受原始脚本中的%project\u name参数。我不得不硬编码一个位置和版本,甚至让它进入构建阶段 原始脚

我有一个runner(配置了一个轻微的修改),它应该构建和单元测试一个包含ASP.NET核心项目、无JS web前端和单元测试项目的解决方案

但是,当MSbuild尝试生成项目时,每个依赖项都会失败(超过150条错误消息),每个项目中都会出现错误NU1001

这是除了一些非常奇怪的行为-它试图使用visual studio 2012来构建,即使VS 2012从未安装在这台机器上。它还拒绝接受原始脚本中的%project\u name参数。我不得不硬编码一个位置和版本,甚至让它进入构建阶段


原始脚本中的nuget已被删除,因为它已被破坏。后来我发现有文档说明nuget现在会在生成时自动刷新包,因此不需要重新添加它。

我认为这不是gitlab ci的问题。将调试工作集中于在与正在使用的运行程序关联的服务器(或容器内)上执行该MSBuild命令

我建议使用
before\u script
调用一个脚本来验证管道所需的依赖关系。例如,预构建脚本可以验证MSBuild、NuGet和Git是否位于运行程序/VM/容器的路径上(这使您可以使用Puppet或Powershell DSC控制这些先决条件,而不是在管道中管理它们)

nuget restore
应作为
restore
阶段的一部分调用,而不是在
before\u脚本中调用。恢复的包可以作为工件在阶段之间传递

您在
build
作业中双重引用了对MSBuild的调用。以下是我在当前使用的管道中调用MSBuild的方式:


构建/开发:
阶段:建造
脚本:
-MSBuild$env:TARGETS/t:Build/p:Configuration=Debug
人工产品:
路径:
-./*/bin

发布此问题后,我使用了一台新的笔记本电脑,因此我不得不再次执行大多数CI/runner步骤。我不知道这些脚本是如何工作的,我尝试在cmd中运行MSbuild,但它既不在解决方案的文件夹中运行,也不在MSbuild文件夹中运行。我已经验证了MSbuild确实存在于脚本顶部的位置。我花了好几天的时间处理yml和您的建议,在CI上发现了大量的yml错误。我甚至不知道从哪里开始/修复。