2012-05-23 48 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支持來使用它。 –