我在 Visual Studio 2010 中有一个以框架 3.5 为目标的项目,其中包含如下代码:
public class Test {
private object _field;
private Action defaultAction = null;
public Test(Action a)
{
defaultAction = a;
}
public Test()
: this(() => { _field = new object(); })
{
}
}
- 当我从 VS 编译项目时,在第 11 行报告编译错误。
- 当我使用“C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe Test.sln”从命令行编译项目时,编译成功。
事实上,这段代码在 VS2008 中编译,但在 VS2010 中以框架 3.5 为目标,没有。
关于发生了什么的任何想法?
更新
为了修复 V2010 中的代码,我进行了如下更改(这相当于原始代码):
public class Test {
private object _field;
private Action defaultAction = null;
public Test(Action a)
{
defaultAction = a;
}
public Test()
{
defaultAction = () => {_field = new object();}
}
}
但让我担心的是,Visual Studio 正在使用框架 4.0 编译我的代码,这可能会在客户环境(框架 3.5)中部署我的应用程序时导致其他错误。