Visual Studio 17构建在PowerShell脚本完成时失败

时间:2018-02-07 15:13:58

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

我有以下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:无效选项' 7.2' for / langversion;必须是ISO-1,ISO-2,默认值或1到6范围内的整数。     [C:\ dev的\后端\源\ 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:无效选项' 7.2' for / langversion;必须是ISO-1,ISO-2,默认值或1到6范围内的整数。   [C:\ dev的\后端\源\ dev.csproj]

0 Warning(s)
1 Error(s)

我正在尝试通过脚本最小化编译时间。我有7/8解决方案来构建。通过IDE执行此操作非常耗时。如果我可以通过脚本成功构建一个解决方案,我将使用其他解决方案调用相同的脚本函数。

1 个答案:

答案 0 :(得分:0)

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

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

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

它应该没有参数就可以工作。