1

这是对以下内容的后续:使用异步委托/lambda 进行投影

显然,异步 CTP 有一个我遇到的错误,我需要使用 VS11 编译器。在命令行中,msbuild即使针对用 VS2010 编写的项目运行,仍然可以使用 VS11 编译器进行编译,因为 VS11/.NET 4.5 就地安装在 .NET 4.0 目录中。

但是,在 Visual Studio 2010 中,使用了一个进程内编译器,似乎还没有升级到新的 VS11 编译器。

我可以(通过一些hackery / DLL 操作)更改Visual Studio 2010 使用的编译器吗?在 VS11 支持 Windows Azure 之前,这只是一个 hack/解决方法,这样我就可以升级到 beta/release Candidate/RTM。

4

1 回答 1

2

使用鲜为人知的属性可能会取得一些成功UseHostCompilerIfAvailable。这应该会导致 IDE 中的构建使用框架目录中的编译器。

但是,诸如智能感知之类的 IDE 功能将始终使用进程内编译器。如果您遇到的错误仅在异步方法的最终转换上,您可能会发现进程内编译器对于智能感知已经足够好,并且 UseHostCompilerIfAvailable 足以让您从 VS 构建。

您可以通过手动编辑您的 csproj 文件来设置它以包含

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>

在顶级属性组中。

另外 - VS11 支持“往返”!在大多数情况下,您可以使用 VS11 打开您的 VS10 项目,而无需强制升级。因此,如果你有一个团队需要暂时将你的项目保持在 V10 格式,你至少可以独立使用 VS11。但是,如果您需要尚未为 VS11 发布的插件,这将更加困难。

希望这可以帮助!:)

于 2012-06-01T09:58:52.807 回答