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。
————————————————
版權聲明:本文爲CSDN博主「低調之人」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lilinoscar/article/details/82749024