VS2015、VS2017自动生成roslyn的文件夹以及csc.exe

本文解决C#编译器CSC.exe缺失问题,通过正确配置项目引用和WebSite.csproj文件,确保Roslyn文件夹及CSC.exe自动生成,避免编译错误。


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。


————————————————
版权声明:本文为优快云博主「低调之人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/lilinoscar/article/details/82749024

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值