构建服务器上 ASP.NET Core 2.0 项目的 Nuget 恢复失败

Nuget restore fails for ASP.NET Core 2.0 project on build server

我正在尝试在 Windows Server 2012R2 上使用 TeamCity 为 .NET Framework 4.6.2(不是 .NET Core)构建一个 ASP.NET Core 2.0 应用程序。

服务器中安装了以下组件:

TeamCity 使用 nuget 版本 4.1 和解决方案文件来恢复依赖包(有关详细信息,请参阅下面的完整日志)。

错误:

[22:57:51]
[22:57:51]Errors in C:\path\to\project\Server\Server.csproj
[22:57:51]    Package Microsoft.AspNetCore 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2). Package Microsoft.AspNetCore 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51]    Package Microsoft.AspNetCore.Mvc 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2). Package Microsoft.AspNetCore.Mvc 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51]    One or more packages are incompatible with .NETFramework,Version=v4.6.2.
[22:57:51]    Package Microsoft.AspNetCore 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2) / win7-x86. Package Microsoft.AspNetCore 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51]    Package Microsoft.AspNetCore.Mvc 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2) / win7-x86. Package Microsoft.AspNetCore.Mvc 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51]    One or more packages are incompatible with .NETFramework,Version=v4.6.2 (win7-x86).
[22:57:51]
[22:57:51]Errors in C:\path\to\project\Server\Server.csproj
[22:57:51]    Package Microsoft.Extensions.FileProviders.Physical 2.0.0 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Microsoft.Extensions.FileProviders.Physical 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51]    Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 2.0.0 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51]    One or more packages are incompatible with .NETCoreApp,Version=v2.0.
[22:57:51]Process exited with code 1

问题:

我认为 .NET Framework 4.6.2 实现了 .NET Standard 2.0,因此我不明白为什么这些包不兼容。在我的本地机器上(使用 Visual Studio 2017 Update 3 (15.3))nuget restore 工作正常。

关于如何解决该错误/如何进一步分析问题的任何想法?


项目文件(包含 nuget 包):

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Server.Common\Server.Common.csproj" />
  </ItemGroup>
</Project>

完整日志输出

[Step 1/4] restore: Restoring NuGet packages for Server.sln (24s)
[22:57:27][restore] NuGet command: C:\path\to\buildagent\tools\NuGet.CommandLine.4.1.0\tools\NuGet.exe restore C:\path\to\project\Server.sln
[22:57:27][restore] Starting: C:\path\to\teamcity\temp\agentTmp\custom_script710236021428854.cmd
[22:57:27][restore] in directory: C:\path\to\project
[22:57:28][restore] MSBuild auto-detection: using msbuild version '15.3.409.57025' from 'C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\bin'.
[22:57:31][restore] Alle in "packages.config" aufgef�hrten Pakete sind bereits installiert.
[22:57:31][restore] Restoring packages for C:\path\to\project\Server\Server.csproj...
[22:57:31][restore] Restoring packages for C:\path\to\project\Server\Server.csproj...
[22:57:32][restore]   GET https://api.nuget.org/v3-flatcontainer/microsoft.visualstudio.web.codegeneration.tools/index.json
[22:57:32][restore]   GET https://api.nuget.org/v3-flatcontainer/microsoft.aspnetcore.mvc/index.json
[22:57:32][restore]   GET https://api.nuget.org/v3-flatcontainer/microsoft.aspnetcore/index.json
[...]
[22:57:41][restore]   OK https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnetapphost/index.json 475ms
[22:57:41][restore]   GET https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnetapphost/2.0.0/microsoft.netcore.dotnetapphost.2.0.0.nupkg
[22:57:41][restore]   OK https://api.nuget.org/v3-flatcontainer/microsoft.netcore.dotnetapphost/2.0.0/microsoft.netcore.dotnetapphost.2.0.0.nupkg 453ms
[22:57:42][restore] Installing System.Xml.XmlSerializer 4.0.11.
[22:57:42][restore] Installing System.Threading.Overlapped 4.0.1.
[22:57:42][restore] Installing System.Security.Principal 4.0.1.
[22:57:42][restore] Installing System.Dynamic.Runtime 4.0.11.
[22:57:42][restore] Installing System.Private.DataContractSerialization 4.1.1.
[22:57:42][restore] Installing Microsoft.Win32.Registry 4.0.0.
[...]
[22:57:48][restore] Installing System.Diagnostics.Contracts 4.0.1.
[22:57:48][restore] Installing System.Threading.Tasks.Dataflow 4.6.0.
[22:57:48][restore] Installing System.IO.Pipes 4.0.0.
[22:57:51][restore] Package Microsoft.Extensions.FileProviders.Physical 2.0.0 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Microsoft.Extensions.FileProviders.Physical 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore] Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 2.0.0 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore] One or more packages are incompatible with .NETCoreApp,Version=v2.0.
[22:57:51][restore] Committing restore...
[22:57:51][restore] Restore failed in 19,33 sec for C:\path\to\project\Server\Server.csproj.
[22:57:51][restore] 
[22:57:51][restore] Errors in C:\path\to\project\Server\Server.csproj
[22:57:51][restore]     Package Microsoft.AspNetCore 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2). Package Microsoft.AspNetCore 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore]     Package Microsoft.AspNetCore.Mvc 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2). Package Microsoft.AspNetCore.Mvc 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore]     One or more packages are incompatible with .NETFramework,Version=v4.6.2.
[22:57:51][restore]     Package Microsoft.AspNetCore 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2) / win7-x86. Package Microsoft.AspNetCore 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore]     Package Microsoft.AspNetCore.Mvc 2.0.0 is not compatible with net462 (.NETFramework,Version=v4.6.2) / win7-x86. Package Microsoft.AspNetCore.Mvc 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore] 
[22:57:51][restore]     One or more packages are incompatible with .NETFramework,Version=v4.6.2 (win7-x86).
[22:57:51][restore] NuGet Config files used:
[22:57:51][restore] 
[22:57:51][restore]     C:\Windows\system32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config
[22:57:51][restore] Errors in C:\path\to\project\Server\Server.csproj
[22:57:51][restore] 
[22:57:51][restore]     Package Microsoft.Extensions.FileProviders.Physical 2.0.0 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Microsoft.Extensions.FileProviders.Physical 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore] Feeds used:
[22:57:51][restore]     https://api.nuget.org/v3/index.json
[22:57:51][restore]     Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 2.0.0 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 2.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
[22:57:51][restore]     One or more packages are incompatible with .NETCoreApp,Version=v2.0.
[22:57:51][restore] 
[22:57:51][restore] Installed:
[22:57:51][restore]     151 package(s) to C:\path\to\project\Server\Server.csproj
[22:57:51][restore] Process exited with code 1
[22:57:51][restore] Process exited with code 1
[22:57:51][Step 1/4] Step Nuget Restore (NuGet Installer) failed

使用 Nuget 版本 4.3 修复它:)。