v1.0.6 из Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Когда я обновляю свой проект dotNet MVC для использования v1.0.6 из Microsoft.CodeDom.Providers.DotNetCompilerPlatform, я сталкиваюсь с проблемами развертывания в том, что каталог roslyn больше не помещается в каталог bin развертывания.
У меня есть v2.3.1 из Microsoft.Net.Compilers в моем проекте, и в этом проекте ничего не изменилось, кроме обновления Microsoft.CodeDom.Providers.DotNetCompilerPlatform с помощью функции управления пакетами NuGet VS2015.
Если я вернусь к v1.0.5 Microsoft.CodeDom.Providers.DotNetCompilerPlatform все работает нормально.
Похоже, что эта обновленная версия Microsoft.CodeDom.Providers.DotNetCompilerPlatform ломает / удаляет ссылки Microsoft.Net.Compilers из проекта.
Я пытался удалить, а затем переустановить Microsoft.CodeDom.Providers.DotNetCompilerPlatform и Microsoft.Net.Compilers из моего проекта, но это не решает проблему.
Я попробовал предложения в следующей статье Stackru без успеха.
Не удалось найти часть пути... bin\roslyn\csc.exe
Я также попытался вручную скопировать каталог roslyn в выходной каталог, но этот каталог удаляется при каждой сборке проекта.
Буду признателен, если кто-нибудь может помочь пролить свет на то, как решить проблему.
Les
3 ответа
У меня была такая же проблема, похоже на изменение в 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" ... />
и публикация снова работает.
Я думаю, что это отслеживается здесь ссылка
1.0.7 был выпущен. Пожалуйста, попробуйте. Если вы обнаружите какую-либо проблему, перейдите в roslyncodedomprovider github repo и зарегистрируйте проблему там.
Как я вижу в моем проекте, удаление двух строк из файла csproj - решает проблему. две строки, расположенные в конце XML-файла csproj, под тегом
внутри тега
<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's 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>