VS2015、VS2017自動生成roslyn的文件夾以及csc.exe

原文鏈接:https://blog.csdn.net/lilinoscar/article/details/82749024


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章