【问题标题】:How can I ignore optional parameter error on MSBuild 3.5如何忽略 MSBuild 3.5 上的可选参数错误
【发布时间】:2023-03-28 08:38:01
【问题描述】:

我正在使用 Visual Studio 2010。

我已经下载了一个更新的类(即UpdatedClass.cs),它有一个带有可选参数的方法,例如:

public void DoThis(bool aValue = false) {...}

使用 Visual Studio 2010,我能够编译它。但我不能用 MSBuild 做到这一点:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /t:Rebuild /clp:ErrorsOnly D:\folder\mySolution.sln
ln
Microsoft (R) Build Engine Version 3.5.30729.5420
[Microsoft .NET Framework, Version 2.0.50727.5448]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

UpdatedClass.cs(29,94): error CS0241: Default parameter specifiers are not permitted

好吧,这个编译器不允许使用可选参数。那么我可以在这个 MSBuild 命令中添加一个额外的参数来忽略这种错误吗?

或者我必须使用 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 编译项目吗? 这对于 asp.net 项目是否安全?

【问题讨论】:

  • 可选参数在 4.0 框架中,因此您必须使用兼容的编译器构建它。 (如果您尝试使用不同的目标版本进行构建,您会在 Visual Studio 中看到相同的错误。)
  • @GalacticCowboy:可选参数从 1.0 开始就在 framework 中,但直到 v4 才在 C# 中可用。

标签: asp.net msbuild-4.0


【解决方案1】:

如果您使用 C# 4 语法,则必须使用 4.0 编译器。这意味着您需要在打算部署此代码的服务器上运行 .Net 4.0。或者 - 重写代码不使用默认参数,这并不难 - 只需添加这样的重载:

public void DoThis() {DoThis(false);}
public void DoThis(bool aValue) {...}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 2018-01-08
    • 2019-04-11
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多