当我更新我的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目录复制到输出目录,但是在项目的每个版本中都删除了该目录。
如果有人能帮助阐明如何解决问题,我将不胜感激。
莱斯
答案 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)
&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>