VS2015、VS2017自动生成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。

发布了209 篇原创文章 · 获赞 370 · 访问量 1954万+

猜你喜欢

转载自blog.csdn.net/lilinoscar/article/details/82749024
今日推荐