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。