Справочная информация: - Мой проект представляет собой библиотеку классов с целевой платформой .NET 4.8 и в моем классе установлен nuget Azure.Storage.Blobs (последняя стабильная версия 12.21.1).
Я столкнулся с проблемой с dll пакета nuget "System.Diagnostics.DiagnosticSource". В моих журналах ошибок версия dll указана как 6.0.0.0, хотя Azure.Core использует версию 6.0.0.1. Я проверил packages.config, csproj, app.config (также с привязкой Redirect), и все они относятся к одной и той же версии пакета, то есть 6.0.0.1.
Я включил журналы сборки, и они имеют следующее:
\`The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\clr.dll
Running under executable C:\\Windows\\SysWOW64\\dllhost.exe
\--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = System.Diagnostics.DiagnosticSource, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
(Fully-specified)
LOG: Appbase = file:///C:/Windows/SysWOW64/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = dllhost.exe
Calling assembly : Azure.Storage.Blobs, Version=12.21.1.0, Culture=neutral, PublicKeyToken=92742159e12e44c8.
=
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: No application configuration file found.
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\config\\machine.config.
LOG: Post-policy reference: System.Diagnostics.DiagnosticSource, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Windows/SysWOW64/System.Diagnostics.DiagnosticSource.DLL.
LOG: Attempting download of new URL file:///C:/Windows/SysWOW64/System.Diagnostics.DiagnosticSource/System.Diagnostics.DiagnosticSource.DLL.
LOG: Attempting download of new URL file:///C:/Windows/SysWOW64/System.Diagnostics.DiagnosticSource.EXE.
LOG: Attempting download of new URL file:///C:/Windows/SysWOW64/System.Diagnostics.DiagnosticSource/System.Diagnostics.DiagnosticSource.EXE.
LOG: Attempting download of new URL file:///C:/Users/agtoluser/Desktop/AzureDLL/R71/System.Diagnostics.DiagnosticSource.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\\Users\\agtoluser\\Desktop\\AzureDLL\\R71\\System.Diagnostics.DiagnosticSource.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: System.Diagnostics.DiagnosticSource, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: The assembly reference did not match the assembly definition found.
ERR: Run-from-source setup phase failed with hr = 0x80131040.
LOG: Attempting download of new URL file:///C:/Users/agtoluser/Desktop/AzureDLL/R71/System.Diagnostics.DiagnosticSource/System.Diagnostics.DiagnosticSource.DLL.
LOG: Attempting download of new URL file:///C:/Users/agtoluser/Desktop/AzureDLL/R71/System.Diagnostics.DiagnosticSource.EXE.
LOG: Attempting download of new URL file:///C:/Users/agtoluser/Desktop/AzureDLL/R71/System.Diagnostics.DiagnosticSource/System.Diagnostics.DiagnosticSource.EXE.
LOG: All probing URLs attempted and failed.
\*\*\* Assembly Binder Log Entry (8/1/2024 @ 2:57:53 PM) \*\*\*
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.\`
Когда я понижаю версию своего пакета NuGet с 6.0.0.1 до 6.0.0.0, я сталкиваюсь с другой ошибкой: «Не удалось загрузить файл или сборку «System.Diagnostics.DiagnosticSource, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51». "
Попытка переключиться с версии 6.0.0.0 на 4.0.4.0 приводит к проблеме совместимости с Azure.Core и Azure.Storage.Blobs, которые не поддерживают System.Diagnostics.DiagnosticSource, Version=4.0.4.0. Несмотря на постоянные ссылки на версию 6.0.0.1 как в моем packages.config, так и в app.config моей новой DLL, ошибка сохраняется.
Был аналогичный вопрос о stackoverflow, я также попытался использовать его решение, которое удалило xmlns из тега сборкиBinding в app.config. Ранее: Сейчас:
Но все равно ошибка появляется. Пожалуйста, предложите какой-нибудь выход.
Вы ссылаетесь на библиотеку, которая ссылается на .NET6, ваш проект создан с использованием .NET Framework 4.8, и это несовместимые версии.
Вы ограничены только библиотеками и их версиями, совместимыми с версией вашей платформы.
@user26601038 user26601038 Это неправильно. Вам необходимо настроить свое приложение на чистый стандарт 2.0, если вы хотите ссылаться на библиотеки net6.
Я переместил используемые методы Azure из nuget Azure.Storage.Blobs в другой проект DLL (.NET Framework 4.8). Я подписал эту DLL, т. е. дал ей строгое имя. Это решило мою проблему.
Но на официальном сайте nuget.org в разделе Framework указано, что Azure.Storage.Blobs совместим с .net framework 4.8: nuget.org/packages/Azure.Storage.Blobs/…