【问题标题】:Visual studio 17 build fails when it is done by PowerShell script由 PowerShell 脚本完成时,Visual Studio 17 构建失败
【发布时间】:2018-07-17 22:36:35
【问题描述】:

我有以下 ps 脚本:-

function buildVS
{
    param
    (
        [parameter(Mandatory=$true)]
        [String] $path,

        [parameter(Mandatory=$false)]
        [bool] $nuget = $true,

        [parameter(Mandatory=$false)]
        [bool] $clean = $true
    )
    process
    {
        $msBuildExe = 'C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe'

        if ($nuget) {
            Write-Host "Restoring NuGet packages" -foregroundcolor green
            nuget restore "$($path)"
        }

        if ($clean) {
            Write-Host "Cleaning $($path)" -foregroundcolor green
            & "$($msBuildExe)" "$($path)" /t:Clean /m
        }

        Write-Host "Building $($path)" -foregroundcolor green
        & "$($msBuildExe)" "$($path)" /t:Rebuild /m:4 /p:BuildInParallel=true  /langversion:7.2 
    }
}

buildVS .\Backend\Backend.sln $false $true

我可以通过 IDE 成功构建它。我在我的项目中将 c# 语言版本设置为 7.2。

我不知道如何通过命令行编译器设置 c# 语言版本。我收到以下错误:-

CSC:错误 CS1617:/langversion 的选项“7.2”无效;必须是 ISO-1、ISO-2、默认值或 1 到 6 范围内的整数。 [C:\dev\Backend\source\dev.csproj] 2>完成构建项目“C:\dev\Backend\source\dev.csproj” (重建目标)——失败。 1>完成构建项目“C:\dev\Backend\Backend.sln”(重建目标)- 失败。

构建失败。

   "C:\dev\Backend\Backend.sln" (Rebuild target) (1) ->
   "C:\dev\Backend\source\dev.csproj"

(重建目标)(2)-> (CoreCompile 目标)-> CSC:错误 CS1617:/langversion 的选项“7.2”无效;必须是 ISO-1、ISO-2、默认值或 1 到 6 范围内的整数。 [C:\dev\Backend\source\dev.csproj]

0 Warning(s)
1 Error(s)

我试图通过脚本最小化编译时间。我有 7/8 的解决方案要构建。用IDE来做真的很费时间。如果我可以通过脚本成功构建一个解决方案,我将使用其他解决方案调用相同的脚本函数。

【问题讨论】:

  • 尝试“最新”或“7”而不是“7.2”。 docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
  • 安装 msbuild 版本 15,然后尝试最新版本。
  • msbuild 15,有单独的安装程序吗?在哪个 ide/installer 中?
  • 我相信它作为构建工具列在底部:visualstudio.com/downloads
  • 我尝试了 msbuild 版本 15。也累了 /langversion:7 和 /langversion:latest。但仍然是相同的错误 MSBUILD:错误 MSB1001:未知开关。开关:/langversion:7

标签: c# visual-studio powershell compilation compiler-optimization


【解决方案1】:

您需要使用/p:langversion="7.2" 而不是/langversion:7.2

您可以做的另一件事是在您的 .sln 文件的同一文件夹中创建一个名为 Directory.Build.props 的文件,其内容如下:

<Project>
  <PropertyGroup>
    <LangVersion>7.2</LangVersion>
  </PropertyGroup>
</Project>

它应该在没有参数的情况下工作。

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2012-08-12
    相关资源
    最近更新 更多