Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSBUILD抱怨空条件运算符_C#_Msbuild - Fatal编程技术网

C# MSBUILD抱怨空条件运算符

C# MSBUILD抱怨空条件运算符,c#,msbuild,C#,Msbuild,我有一个MSBUILD项目,它抱怨空条件语法 BuildResult buildResult = BuildManager.DefaultBuildManager.Build(parameters, BuildRequest); buildResult.resultsbytarget 关键:“构建” 值:结果代码“失败” 我的日志告诉我有关此错误的信息: Workflow\Activate.cs(283,52):错误CS1525:表达式术语“”无效。 当我查看代码中的特定行时,它使用空条件运算

我有一个MSBUILD项目,它抱怨空条件语法

BuildResult buildResult = BuildManager.DefaultBuildManager.Build(parameters, BuildRequest);
buildResult.resultsbytarget

关键:“构建”

值:结果代码“失败”

我的日志告诉我有关此错误的信息:

Workflow\Activate.cs(283,52):错误CS1525:表达式术语“”无效。

当我查看代码中的特定行时,它使用空条件运算符,如下所示

Contract=Context?选中

删除空条件并用空检查替换它可以解决问题,但我有很多代码使用空条件运算符。我不想编辑它们中的每一个

if(Context != null)
    contract = Context.Selected;
更新1:

  • 我确保ms build项目使用最新版本的c#

  • 还确保项目正在尝试生成的.net framework版本相同

  • 更新2:


    下载了vs 2017的msbuild工具,并从此处使用DLL。但是,出现新错误
    无法识别工具版本“15.0”。可用的工具版本有“12.0”、“2.0”、“3.5”、“4.0”。

    在使用4.0之前使用了什么
    MSBuild
    版本?@UserName,但目前是
    C:\ProgramFiles(x86)\MSBuild\12.0\Bin
    中的12.0。我认为您应该使用最新的
    MSBuild
    版本。代码片段的语法是C#6.0和Roslyn。您可以安装或使用Visual Studio附带的
    MSBuild
    @用户名使用了最新的VS 2017生成工具。现在我得到一个新的错误<代码>无法识别工具版本“15.0”。可用的工具版本有“12.0”、“2.0”、“3.5”、“4.0”。
    构建项目中使用了哪些
    ToolsVersion
    ?如果不同,请尝试设置为15.0。