在以下项目上,Dotnet命令失败,退出代码为非零:

时间:2020-09-11 10:30:58

标签: tfs azure-devops

我正在尝试在TFS上构建一个API,该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构建可以完成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构建任务有什么想法吗?


构造:

definition pipeline CI


TFS返回:

TFS return


本地配置:

enter image description here

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

2-为解决方案管理软件包Nuget

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

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

对于我来说,我也取消选中Visual Studio软件包

1 个答案:

答案 0 :(得分:0)

您应该在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