.Net 5 — использование System.Сборки с веб-ссылками не должны загружаться для выполнения. (0x80131058)

#.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.

Ссылка на пакет Nuget

Это строится с помощью файла .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 Я не понял этого. В итоге я перешел к другим вещам и не решил эту проблему.