在不使用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>
相關連結
- 在ASP.NET WSP模式中,啟用C# 8.0(Roslyn)編譯器
- 在ASP.NET WSP模式中,啟用C# 7.0(Roslyn)編譯器
- 在ASP.NET WSP模式中,啟用C# 6.0(Roslyn)編譯器
- 快速進行WSP網站之C#(Roslyn)編譯器相關檔案覆蓋作業
VisualStudio WSP WebSiteProject C#6.0 C#7.0 C#7.1 Debug Enable