vs2107从命令行构建“当前的.NET SDK不支持以.NET Standard 2.0为目标。”

时间:2018-01-25 18:07:21

标签: msbuild visual-studio-2017 .net-standard

我无法从命令行构建vs2017解决方案,但我可以从IDE构建。一旦我从IDE构建,命令行构建就可以了。因此,ide正在做一些不同的事情 - 我错过了什么?以下是我为命令行构建所做的事情:

nuget.exe restore mysoln.sln
"E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /m /t:Rebuild /clp:Summary /p:Configuration=Debug  /p:Platform="Any CPU" mysoln.sln  

我得到的输出:

"Forms.csproj" (Clean target) (14:3) ->
     E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets(126,5): error : The current .NET SDK does not support targeting .NET Standard 2.0.  Either target .NET Standard 1.6 or lower, or use a version of the .NET SDK that supports .NET Standard 2.0. [E:\wp\Forms.csproj]

我如何才能使命令行构建工作?

==============

更新

我从命令行尝试"E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /m /t:Restore GpsConsole.sln并且它可以工作。但是当jenkins运行完全相同的命令时,我得到了相同的错误

==============

更新2

我们建立解决方案的方式是:

nuget.exe restore mysoln.sln
"E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /m /t:Restore  mysoln.sln 
"E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /m /t:Rebuild /clp:Summary /p:Configuration=Debug  /p:Platform="Any CPU" mysoln.sln  

2 个答案:

答案 0 :(得分:1)

我相信您的visual studio确实安装了.net core 2.0 SDK,因为它能够构建您的.net标准2.0解决方案。

但是,nuget restore指向visual studio目录中的一个sdk(Visual Studio可以使用的一个sdk,但默认情况下不会安装.net core 2.0 sdk)。

你的.net core 2.0 sdk可能位于C:\ ... \ dotnet \ ...

你想让nuget恢复使用位于该目录内的msbuild,而不是visual studio目录中的那个。

答案 1 :(得分:1)

我建议你重新考虑命令行方法。

您可以使构建脚本独立于Visual Studio安装,使用您想要的MSBuild版本,并在构建服务器上重用。

简短计划

  1. 安装Visual Studio Build Tools 2017
  2. 找到合适的MSBuild
  3. 清洁解决方案
  4. 还原包
  5. 构建解决方案
  6. <强>详情

    1. 使用构建工具可以让您独立于Visual Studio安装。

      Build Tools for Visual Studio 2017Visual Studio Downloads page

      下载direct link

      此处记录的命令行参数:Use command-line parameters to install Visual Studio 2017

      此处列出了所有工作负载和组件:Visual Studio Build Tools 2017 component directory

    2. 您可以使用PowerShell模块VSSetup。从此处下载或安装:Github: Microsoft/Visual Studio Setup PowerShell Module

    3. 只需使用clean目标

    4. 运行MSBulid
    5. 帮助nuget.exe使用正确的MSBuild

    6. 使用build目标运行MSBuild(您可以添加其他必需参数)

    7. # 1. Find MS Build  
      
      Import-Module $PSScriptRoot\VSSetup\VSSetup.psd1
      
      $msBuildPath = (Get-VSSetupInstance | Select-VSSetupInstance -Version 15.0 -Product Microsoft.VisualStudio.Product.BuildTools).InstallationPath
      
      if ([System.IntPtr]::Size -eq 8)
      {
          $global:msbuildPath = Join-Path $msBuildPath 'MSBuild\15.0\Bin\amd64'
      }
      else
      {
          $global:msbuildPath = Join-Path $msBuildPath 'MSBuild\15.0\Bin'
      }
      
      Write-Output "Using MSBuild from $global:msbuildPath"
      Write-Output "MSBuild /version"
      
      $msbuild = Join-Path $global:msbuildPath msbuild
      
      & $msbuild /version
      
      
      # 2. Clean
      
      & $msbuild "$sln_file" /t:Clean /v:q /nologo
      
      
      # 3. Restore
      
      $nuget = Join-Path $PSScriptRoot "\.nuget\nuget.exe"
      & $nuget restore -MSBuildPath $global:msbuildPath
      
      
      # 4. Build
      
      & $msbuild "$sln_file" /t:Build /v:q /nologo