首页 > 解决方案 > Dotnet 命令在以下项目中因非零退出代码而失败:

问题描述

我正在尝试在 TFS 上构建一个 API,其中包含 dotnet.core3.1 中的多个项目当我在 TFS 上运行 dotnet build Api.sln 命令时,结果如下

[错误] Dotnet 命令在以下项目中以非零退出代码失败:D:\TFS\Agent01\_work\18\s\PMTApi.sln


语境:

TFS 2017

Dotnet Core 3.1 项目

TFS git 上的源代码管理

代理无法连接到外部(互联网)

依赖项导入是从私人服务器完成的,这要归功于 NuGet.Config 文件设置为重定向依赖项导入,而不是在https://api.nuget.org/v3/index.json服务器上,而是在我们私人公司的服务器上.


解释:

在 TFS git 源代码管理器上,PMTApi.sln 项目包含 7 个 .csproj 文件

但是在 PMTApi.sln 文件中只有 4 个 .csproj 被包含在内


本地结果:

是好的 dotnet build 完成了 5 个成功的项目。


TFS 上的结果:

不好。

[错误] Dotnet 命令在以下项目中以非零退出代码失败:D:\TFS\Agent01\_work\18\s\PMTApi.sln


观察:

我的印象是 TFS 基于 TFS git 源管理器中的所有 .csproj 文件,而不是来自 PMTApi.sln 结论 PMTApi.sln 中未引用的项目仍然尝试恢复导致顶部错误的依赖项。


测试:

我试图像这样在我的 NuGet.Config 文件中排除这 3 个 .csproj 项目,但它不起作用

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="XXX NuGet Packages" value="http://privateServer/nuget" />
  </packageSources>

    <ItemGroup>
        <ProjectReference Exclude="..\folderName1\projectName1.csproj" />
        <ProjectReference Exclude="..\folderName2\projectName2.csproj" />
        <ProjectReference Exclude="..\folderName3\projectName3.csproj" />
    </ItemGroup>
</configuration>

您对成功的 dotnet 构建任务有什么想法吗?


那个工程:

定义管道 CI


TFS 返回:

TFS 回报


本地配置:

在此处输入图像描述

1-在这里你必须右键单击解决方案

2-管理包 Nuget 以获取解决方案

3-添加您的私人服务器的网址

4-并取消选中 api.NuGet.org 的服务器

就我而言,我还取消选中了 Visual Studio 软件包

标签: tfsazure-devops

解决方案


您应该指定csproj要在Project(s)参数中使用的文件,而不是sln文件。检查此参数的描述:

要使用的 csproj 文件的路径。您可以使用通配符(例如,**/*.csproj 用于所有子文件夹中的所有 .csproj 文件)。此字段遵循 glob 模式,并且始终针对存储库的根目录运行,而与工作目录无关。

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops


推荐阅读