#.net #msbuild #.net-5
#.net #msbuild #.net-5
Вопрос:
Я переношу приложение .Net 4.5 Framework на .Net 5 (я хочу опубликовать один исполняемый dotnet publish -r win-x64 -c Release -p:PublishSingleFile=true --self-contained true /p:IncludeNativeLibrariesInSingleFile=true
файл).
Я упаковал dll в пакет NuGet. Это включает в себя System.web.Services.dll (4.0.300319.18020, я думаю, .Net Framework 4.5 dll) вместе с его dll.
Это строится с помощью файла .csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="Properties" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="ReportingServices2010" Version="1.0.4" />
<PackageReference Include="SharpZipLib" Version="1.3.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
</ItemGroup>
</Project>
Во время выполнения я получаю следующее:
System.BadImageFormatException: Could not load file or assembly 'System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (0x80131058)
File name: 'System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.BadImageFormatException: Cannot load a reference assembly for execution.
Я некоторое время искал, но я не нашел способа обойти это. Я думаю, что .Net 5 может ссылаться на это напрямую, особенно с TargetFramework>net5.0-windows</TargetFramework>
. Почему он не может его загрузить? Почему версия сообщения об ошибке = 4.0.0.0? Откуда он пытается загрузить dll (GAC все еще что-то в .net 5?)
Комментарии:
1. удалите папку bin и obj, удалите все файлы кэша nuget
C:Usersxxx(current user).nugetpackages
, сохраняется ли ошибка?2. ошибка сохраняется. Мне любопытно, почему это могло сработать?
3. @AlignedDev У меня та же проблема — перенос сборки .Net Framework 4.7.2 в .NET 5.0 и получение той же ошибки, что HttpContext не существует, потому что System. Web отсутствует в SDK. Это критическое изменение docs.microsoft.com/en-us/dotnet/core/compatibility/aspnet-core /. … Вы смогли это решить?
4. @jWeezy Я не понял этого. В итоге я перешел к другим вещам и не решил эту проблему.