Microsoft.CodeDom.Providers.DotNetCompilerPlatform 的 v1.0.6
v1.0.6 of Microsoft.CodeDom.Providers.DotNetCompilerPlatform
当我更新我的 dotNet MVC 项目以使用 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 的 v1.0.6 时,我遇到了部署问题,因为 roslyn 目录不再位于部署的 bin 目录下。
我的项目中有 Microsoft.Net.Compilers 的 v2.3.1,除了通过 VS2015 的“管理 NuGet 包”功能更新 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,但这并没有解决问题。
我尝试了以下 Whosebug 文章中的建议,但没有成功。
我也尝试手动将 roslyn 目录复制到输出目录,但该目录在每次构建项目时都会被删除。
如果有人能帮助阐明如何解决问题,我将不胜感激。
莱斯
我遇到了同样的问题,看来是 packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.6\build\net45
下的 Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
文件发生了变化
我通过添加回
从 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.0.7 已发布。请试一试。如果您发现任何问题,请转到 roslyncodedomprovider github repo 并在那里提交问题。
正如我在我的项目中看到的那样,从 csproj 文件中删除两行 - 解决了问题。
这两行放在 csproj XML 文件的末尾,在标签
下
<目标名称="EnsureNuGetPackageBuildImports"
BeforeTargets="PrepareForBuild">
标签内
<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'))" />
删除它们 - 发布恢复正常。
Github 的 Issue 中有错字,缺少 n (RoslyCompilerFiles) 而不是RoslynCompilerFiles,修复后如下所示:
<Target Name="CopyRoslynCompilerFilesToOutputDirectory" AfterTargets="CopyFilesToOutputDirectory">
<Copy SourceFiles="@(RoslynCompilerFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" Retries="0" />
</Target>
顺便说一句,我的 SampleWebApp.csproj 来自 https://github.com/JonPSmith/SampleMvcWebApp
取而代之(放置 Roslyn next2):
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
当我更新我的 dotNet MVC 项目以使用 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 的 v1.0.6 时,我遇到了部署问题,因为 roslyn 目录不再位于部署的 bin 目录下。
我的项目中有 Microsoft.Net.Compilers 的 v2.3.1,除了通过 VS2015 的“管理 NuGet 包”功能更新 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,但这并没有解决问题。
我尝试了以下 Whosebug 文章中的建议,但没有成功。
我也尝试手动将 roslyn 目录复制到输出目录,但该目录在每次构建项目时都会被删除。
如果有人能帮助阐明如何解决问题,我将不胜感激。
莱斯
我遇到了同样的问题,看来是 packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.6\build\net45
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
文件发生了变化
我通过添加回
从 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.0.7 已发布。请试一试。如果您发现任何问题,请转到 roslyncodedomprovider github repo 并在那里提交问题。
正如我在我的项目中看到的那样,从 csproj 文件中删除两行 - 解决了问题。 这两行放在 csproj XML 文件的末尾,在标签
下<目标名称="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
标签内
<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'))" />
删除它们 - 发布恢复正常。
Github 的 Issue 中有错字,缺少 n (RoslyCompilerFiles) 而不是RoslynCompilerFiles,修复后如下所示:
<Target Name="CopyRoslynCompilerFilesToOutputDirectory" AfterTargets="CopyFilesToOutputDirectory">
<Copy SourceFiles="@(RoslynCompilerFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" Retries="0" />
</Target>
顺便说一句,我的 SampleWebApp.csproj 来自 https://github.com/JonPSmith/SampleMvcWebApp 取而代之(放置 Roslyn next2):
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>