TeamCity build fails, VS 2015 build succeeds

2019-09-13 04:57发布

问题:

I have a project which, when built in VS will succeed:

PM> dotnet build -f net452
Project Core.RecordingProvider (.NETFramework,Version=v4.5.2) will be compiled because expected outputs are missing
Compiling Core.RecordingProvider for .NETFramework,Version=v4.5.2

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:01.0807947

But, when that project is built in TeamCity, it fails for reasons which are not at all clear to me:

[11:37:40]Step 1/4: -- Restore -- (.NET Core (dotnet)) (5s)
[11:37:40]Starting: "C:\Program Files\dotnet\dotnet.exe" restore
[11:37:40]in directory: C:\BuildAgents\Agent-5\work\e1ee23b6a628140b
[11:37:41]log  : Restoring packages for C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\Core.RecordingProvider.Tests\project.json...
[11:37:41]log  : Restoring packages for C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider.FunctionalTests\project.json...
[11:37:41]log  : Restoring packages for C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider\project.json...
[11:37:44]log  : Writing lock file to disk. Path: C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider.FunctionalTests\project.lock.json
[11:37:44]log  : C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider.FunctionalTests\project.json
[11:37:44]log  : Restore completed in 2199ms.
[11:37:44]log  : Writing lock file to disk. Path: C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\Core.RecordingProvider.Tests\project.lock.json
[11:37:44]log  : C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\Core.RecordingProvider.Tests\project.json
[11:37:44]log  : Restore completed in 2463ms.
[11:37:45]log  : Writing lock file to disk. Path: C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider\project.lock.json
[11:37:45]log  : C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider\project.json
[11:37:45]log  : Restore completed in 3556ms.
[11:37:45]Process exited with code 0
[11:37:45]Step 2/4: -- Build -- (.NET Core (dotnet)) (1s)
[11:37:45]Starting: "C:\Program Files\dotnet\dotnet.exe" build Core.RecordingProvider/src/Core.RecordingProvider --framework net452 --configuration Debug --build-profile --no-incremental
[11:37:45]in directory: C:\BuildAgents\Agent-5\work\e1ee23b6a628140b
[11:37:46]Project Core.RecordingProvider (.NETFramework,Version=v4.5.2) will be compiled because project is not safe for incremental compilation. Use --build-profile flag for more information.
[11:37:46]Compiling Core.RecordingProvider for .NETFramework,Version=v4.5.2
[11:37:46]C:\BuildAgents\Agent-5\work\e1ee23b6a628140b\Core.RecordingProvider\src\Core.RecordingProvider\project.json(8,33): error NU1001: The dependency System.Data could not be resolved.
[11:37:46]
[11:37:46]Compilation failed.
[11:37:46]    0 Warning(s)
[11:37:46]    1 Error(s)
[11:37:46]
[11:37:46]Time elapsed 00:00:00.0319611
[11:37:46]
[11:37:46]Process exited with code 1
[11:37:47]Step -- Build -- (.NET Core (dotnet)) failed

What is this error NU1001: The dependency System.Data could not be resolved that only occurs when building with TC, and how do I resolve it?

More than an hours worth of research on Google hasn't turned up anything useful, not even a hint of something that might be useful.

Here's the project.json, in case that turns out to be useful.

{
    "version": "1.1.0-*",

    "dependencies": {
        "Microsoft.Azure.DocumentDB": "1.11.1",
        "WindowsAzure.Storage": "8.0.1"
    },

    "frameworks": {
        "net452" : {}
    }
}

Thanks

Edited to show the dotnet restore step on TC

Edit 2 -- removed project.lock.json from source, and rebuild.. updated TC output.

回答1:

The answer turned out to be that my TeamCity server did not have all the DotNetFrameworkTargetingPacks. In particular, it did have the 4.0, 4.5, and 4.6 packs, but was missing the packs for 4.5.1, 4.5.2, 4.6.1, and 4.6.2.

I downloaded them from this website: http://getdotnet.azurewebsites.net/target-dotnet-platforms.html

The 4 packs were .NET Framework 4.6.2 Developer Pack .NET Framework 4.6.1 Targeting Pack .NET Framework 4.5.2 Developer Pack .NET Framework 4.5.1 Developer Pack

After I installed all 4 of them, I rebooted the TC Server, re-ran the builds, and they ran to completion.