VS2015、VS2017自動生成roslyn的資料夾以及csc.exe
阿新 • • 發佈:2019-02-17
csc.exe代表C# 編譯器,所以在需要專案nuget包引用”Microsoft.CodeDom.Providers.DotNetCompilerPlatform“以及”Microsoft.Net.Compilers“,然後在編譯的時候,自動會在bin資料夾裡生成roslyn資料夾,無需從別的專案拷貝,如果專案引用了那2個dll,而bin資料夾裡又沒有生成roslyn相關的檔案,那執行專案會報錯:未能找到路徑“........\bin\roslyn\csc.exe”的一部分。
解決方案:
nuget包引用以上兩個檔案dll,生成一下專案,檢視是否在bin資料夾裡生成了roslyn資料夾,如果沒有,則需要從別的專案裡拷貝過來,放進去即可。
解決如何自動生成roslyn資料夾?
問題過程:由於配置TFS的自動化釋出,一直不成功,然後就搗鼓專案,刪除一些nuget裡的無關的dll以及配置,不知道怎麼的,就導致了無法咋bin資料夾生成roslyn,只能複製別的專案,鬱悶?還原到歷史版本,是可以生成此檔案,那隻能一步步查詢問題了。
原因:原來我在專案類庫 WebSite.csproj 裡刪除了相關配置,導致無法自動生成csc.exe。
解決方案:
用notepad++開啟WebSite.csproj檔案(記得簽出檔案並去掉只讀屬性),在Project屬性裡新增引用程式碼即可,如下:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> <Import Project="..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProductVersion> </ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{A82547C1-503D-4D7E-9148-E8D44DF1461F}</ProjectGuid> <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> .......
Project頭部加入:
<Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> <Import Project="..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
儲存,重新編譯一下專案看看,應該是可以自動化生成roslyn的資料夾以及csc.exe。