Microsoft.CodeDom.Providers.DotNetCompilerPlatform的v1.0.6

时间:2017-08-07 02:52:58

标签: asp.net asp.net-mvc visual-studio-2015 roslyn

当我更新我的dotNet MVC项目以使用Microsoft.CodeDom.Providers.DotNetCompilerPlatform的v1.0.6时,我遇到了部署问题,因为roslyn目录不再位于部署的bin目录下。

我的项目中有Microsoft.Net.Compilers的v2.3.1,除了通过VS2015的Manage NuGet Packages功能更新Microsoft.CodeDom.Providers.DotNetCompilerPlatform之外,项目中没有任何其他内容被更改。

如果我恢复到Microsoft.CodeDom.Providers.DotNetCompilerPlatform的v1.0.5,一切正常。

似乎Microsoft.CodeDom.Providers.DotNetCompilerPlatform的更新版本正在破坏/删除项目中的Microsoft.Net.Compilers引用。

我尝试从我的项目中卸载然后重新安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers,但这并没有解决问题。

我尝试了以下StackOverflow文章中的建议但没有成功。

Could not find a part of the path ... bin\roslyn\csc.exe

我还尝试手动将roslyn目录复制到输出目录,但是在项目的每个版本中都删除了该目录。

如果有人能帮助阐明如何解决问题,我将不胜感激。

莱斯

4 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,看起来像Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props文件包\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.6\build\net45

下的更改

我在1.0.5版本的目标中添加了回来的

<Target Name="IncludeRoslynCompilerFilesToItemGroup" AfterTargets="ResolveAssemblyReferences" >
<ItemGroup>
  <None Include="@(RoslyCompilerFiles)" Condition="">
    <Link>%(RoslyCompilerFiles.Link)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

<Target Name="CopyRoslynCompilerFilesToOutputDirectory" ... />

并且出版工作再次开始。

我认为这里正在跟踪link

答案 1 :(得分:3)

1.0.7发布了。请试一试。如果您发现任何问题,请转到roslyncodedomprovider github repo并在那里提出问题。

答案 2 :(得分:0)

正如我在项目中看到的那样,从csproj文件中删除两行 - 解决了问题。 两行放在csproj XML文件的末尾,标记为

&lt; Target Name =“EnsureNuGetPackageBuildImports” BeforeTargets = “PrepareForBuild” &GT;

标签内的

<PropertyGroup>

这两行是:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.3.2\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.2.3.2\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />

删除它们 - 发布完全恢复正常。

答案 3 :(得分:0)

Github的Issue中有一个错字,是缺少 n (Rosly CompilerFiles )而不是Rosly n CompilerFiles < / em>,固定格式如下:

select l.* 
from lob l 
join ( 
    select min(lobId) as keepId, name, companyid
    from lob 
    where disabled = false
    group by name, companyid, disabled
    having count(*) > 1
) k on l.name = k.name and l.companyid = k.companyid
where l.disabled = false  
and l.lobId > k.lobId
order by l.companyid, l.name

我的https://github.com/JonPSmith/SampleMvcWebApp的SampleWebApp.csproj 取而代之的是(放置Roslyn next2):

  <Target Name="CopyRoslynCompilerFilesToOutputDirectory" AfterTargets="CopyFilesToOutputDirectory">
    <Copy SourceFiles="@(RoslynCompilerFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" Retries="0" />
  </Target>