在不使用nuget的情況下,讓WSP可以在VisualStudio中使用C#新語法

之前都在討論有關於佈署時期環境中,如何讓WSP(Website Project)專案可以順利的使用C# 6.0以上的語法。今天要討論的狀況是在Visual Studio中,我們其實也需要相關的開發環境來除錯,今天就是要來討論如何逐步地將相關的檔案添加進你的WSP目錄中,讓你的Visaul Studio(這裡採用的是2017版本)可以順利使用新的C#語法偵錯。

請先使用nuget下載最新的Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Step 1. 請到Nuget下載Commandline程式,放到桌面。

Step 2. 請在Console模式下輸入:(會幫你安裝Microsoft.CodeDom.Providers.DotNetCompilerPlatform以及Microsoft.Net.Compilers兩個組件)

nuget install Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Step 3. 打開「Microsoft.CodeDom.Providers.DotNetCompilerPlatform」目錄,進入到「lib」資料夾中,想辦法找到「Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll」,找到後將其加入到你的WSP專案中的「bin」目錄。做完這個動作後,順便按右鍵查看一下DLL版本號,以下圖為例,版本號為「1.0.8」。

Step 4. 在WSP的「bin」目錄下,建立一個叫做「roslyn」的資料夾。接著到「Microsoft.Net.Compilers」目錄中,進入到「tools」資料夾,接著把裡面所有的檔案,都複製到「bin\roslyn」資料夾之中。

Step 5. 打開WSP的「web.config」,添加下列資訊,請特別注意版本號的那個屬性,要跟你下載的DLL一致喔!

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
  </compilers>
</system.codedom>

大功告成,Happy Coding!

2021-01-14 補充說明:

來到了VisualStudio 2019時代,Microsoft.CodeDom.Providers.DotNetCompilerPlatform也輾轉的來到了3.6.0版本,當DLL被複製進bin資料夾下,以下分享web.config的撰寫方法:

<system.codedom>
  <compilers>
    <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </compilers>
</system.codedom>

2023-07-17 補充說明:

來到了VisualStudio 2022時代,Microsoft.CodeDom.Providers.DotNetCompilerPlatform也輾轉的來到了3.11.0版本(因為我想停留在C# 9.0版的語法,如果想要使用C# 10.0的話,其實當前的DotNetCompilerPlatform最新版本是4.1.0),當DLL被複製進bin資料夾下,以下分享web.config的撰寫方法:

<system.codedom>
  <compilers>
    <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.11.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </compilers>
</system.codedom>

相關連結

VisualStudio WSP WebSiteProject C#6.0 C#7.0 C#7.1 Debug Enable