当我更新我的dotNet MVC项目使用微软的v1.0.6时。CodeDom . providers . dotnet compiler platform I出现部署问题,因为roslyn目录不再位于部署的bin目录下。
我在我的项目中有Microsoft. Net的v2.3.1。编译器,除了通过VS2015的管理Nuget包功能更新Microsoft. CodeDom.提供商. DotNetCompiler平台之外,项目中没有其他变化。
如果我回到微软的1.0.5版。CodeDom . providers . dotnet compiler platform都工作正常。
看起来好像这个更新版本的Microsoft.CodeDom.Providers.DotNetCompilerPlatform正在破坏/删除项目中的Microsoft.Net.Compilers引用。
我尝试从我的项目中卸载然后重新安装Microsoft. CodeDom.提供商. DotNetCompiler平台和Microsoft. Net.编译器,但这并不能解决问题。
我尝试了以下StackOverflow文章中的建议,但没有成功。
找不到路径的一部分…bin\roslyn\csc.exe
我还尝试手动将roslyn目录复制到输出目录,但该目录会在项目的每次构建时被删除。
如果有人能帮助阐明如何解决问题,我将不胜感激。
女同性恋
正如我在项目中看到的那样,从 csproj 文件中删除两行 - 解决了问题。放置在 csproj XML 文件末尾的两行,在标记下
在标签内部
<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'))" />
通过删除它们 - 发布恢复完美。
1.0.7 已发布。请试一试。如果您看到任何问题,请转到 roslyncodedomprovider github 存储库并在那里提交问题。
我也遇到了同样的问题,它看起来像是Microsoft.CodeDom.Providers.DotNetCompilerPlatform中的一个更改。props</code>文件位于包<code>\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.6\build\net45</code>下
我通过添加back in从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" ... />
出版业又开始工作了。
我认为它正在被跟踪 这里链接