c# - Visual Studio 17 构建在由 PowerShell 脚本完成时失败

标签 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 : error CS1617: Invalid option '7.2' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6. [C:\dev\Backend\source\dev.csproj] 2>Done Building Project "C:\dev\Backend\source\dev.csproj" (Rebuild target(s)) -- FAILED. 1>Done Building Project "C:\dev\Backend\Backend.sln" (Rebuild target(s)) -- FAILED.

构建失败。

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

(重建目标)(2)-> (核心编译目标)-> 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来做真的很费时间。如果我可以通过脚本成功构建一个解决方案,我将使用其他解决方案调用相同的脚本函数。

最佳答案

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

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

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

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

关于c# - Visual Studio 17 构建在由 PowerShell 脚本完成时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48667174/

相关文章:

.net - 如何更改 "Generate Method Stub"以在 VS 中抛出 NotImplementedException?

azure - 格式化 Powershell 脚本对象输出?

点源文件中的 PowerShell 点源 - 导入类

c# - 如何在设置页面中设置List picker以及从IsolatedStorageSettings中存储和检索值?(内有说明)

vb.net - 为什么我的基本默认 .acceptbutton 不起作用?

c# - 为什么我的字典要向字符串中添加额外的转义字符?

powershell - 重命名选择对象中的列

c# - 确定三个字段之一是否具有任何关键字列表

c# - 字符串创建

c# 将短数组从单声道 wav 文件转换为短数组以写入立体声 wav