簡體   English   中英

用新的Roslyn構建替換c#編譯器

[英]Replacing c# compiler with new Roslyn build

我正在玩Roslyn的一些更改,但不幸的是,當我運行VisualStudioSetup.Next時,即使是未經修改的解決方案也會崩潰,並且嘗試加載MS程序集時出錯。 所以我做了一些簡單的更改,用新版本替換了我機器的現有二進制文件和配置文件。 C:/Program Files (x86)/MSBuild/bin and Windows/Microsoft.NET/Framework64進行了更改。

替換CSC,VBCSCompiler,DLL和配置文件會導致csc.exe在任何構建上引發錯誤。 它抱怨清單指定了CodeAnalysis.CSharp DLL的不同版本。 它沒有為文件甚至名稱提供路徑。 我用新版本替換了上述文件夾中的配置和DLL。 我需要實際替換哪些文件才能正常工作?

我搜索了所有CSC實例的整個驅動器,並確保所有配置都指定了DLL的新版本,所以我不知道現在在哪里查看。

我知道可以將參數傳遞給MSBuild或者向csproj文件添加一個部分來指定編譯器二進制文件的目錄,但是我想獲得勝利。

編輯:所以我決定只更改我的版本的版本號。 通過VS中的程序集屬性執行此操作會導致構建失敗。 我嘗試使用MSBuild,但在每個項目中都出現此錯誤:

"F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj" (default target) (1) ->

F:\Git\Repos\roslyn\build\Targets\Versions.props(42,5): 

error MSB4184: The expression ""1".Substring(3)" cannot be evaluated. 

startIndex cannot be larger than length of string. 

Parameter name: startIndex F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj]

它盡管從VS建立起來很好。

MSBuild參數: /p:OfficialBuild=true /p:BuildNumber=1.3.1.60616 /p:Configuration=Release

要在Visual Studio 2017的實驗實例中替換編譯器當前min。 所需版本為v15.3或更高版本。 並且有必要安裝Roslyn.Compilers.Extension.vsix而不是VisualStudioSetup.Next

DotNet Roslyn github repo文檔中的確切信息如下:

CompilerExtension :此項目可以在Solution Explorer的Compilers文件夾中找到,並構建Roslyn.Compilers.Extension.vsix 這將部署用於在IDE中進行實際構建的命令行編譯器的副本。 它只影響從安裝的Visual Studio實驗實例觸發的構建,因此不會影響常規構建。 請注意,如果只安裝此命令,IDE將不會了解您的構建中包含的任何語言功能。 如果您經常處理新的語言功能,您可能希望考慮構建CompilerExtension和VisualStudioSetup項目,以確保實際構建和實時分析同步。

VisualStudioSetup.Next描述清楚地說明了它的限制和預期用法,它修復了IDE錯誤:

VisualStudioSetup.Next :此項目可以在Solution Explorer的VisualStudio文件夾中找到,並構建Roslyn.VisualStudio.Setup.vsix。 理論上,它包含用於為下一版本的VS(Dev16)點亮功能的代碼,但是自Dev15 / VS2017發布以來,目前還沒有更新。 如果您正在修復IDE錯誤,那么這就是您要使用的項目。

如果計划是在Visual Studio 2017的默認實例中替換Roslyn編譯器,則執行以下操作:

  1. 關閉Visual Studio 2017的所有實例。
  2. 雙擊Roslyn.Compilers.Extension.vsix包,然后提升安裝擴展名。 這次它應該在默認實例中可用。

上述步驟也可以應用於Visual Studio構建工具。

注意 - 如果您構建和使用未發布的代碼,即使在安裝步驟中也會出現錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM