2012-05-23 46 views
1

这是后续行动:Projection using async delegate/lambda更改Visual Studio 2010的进程内编译器?

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

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

我可以(通过一些hackery/DLL操作)更改Visual Studio 2010使用的编译器吗?这只是一个黑客/解决方法,直到VS11支持Windows Azure,这样我才能升级到Beta/Release候选版/ RTM。

+1

您可以尝试用VS11中的替换C#语言服务。只要VS11仍然安装(除了其他问题),它应该主要工作。外部SDK API没有改变AFAIK,但谁知道C#? – leppie

+0

@leppie这似乎很有前途 - 任何想法,这些DLL的生活? –

+0

' \ Common7 \ IDE \ Microsoft.VisualStudio.CSharp.Services.Language.dll' – leppie

回答

2

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

但是,像intellisense这样的IDE功能将始终使用进程内编译器。如果您碰到的错误只是异步方法的最终转换,您可能会发现in-proc编译器对于intellisense来说已经足够好用了,并且UseHostCompilerIfAvailable足以让您从VS中进行构建。

通过手动编辑的csproj文件,将它设置为包括

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> 
顶部属性组中

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

希望这会有所帮助! :)

+0

这工作得很好,比用DLL来解决问题要好得多。我一直在使用VS11往返,但这是一场噩梦。我将等待VS11中的Azure SDK支持来使用它。 –