В настоящее время я застрял в аду зависимостей с плагином Excel DNA, который использует Azure SDK для взаимодействия с хранилищем BLOB-объектов.
Я столкнулся с проблемой, описанной здесь https://github.com/Azure/azure-sdk-for-net/issues/39798 , для которой предлагается включить автоматическое перенаправление привязки. Однако мне неясно, поддерживает ли это ExcelDNA, особенно учитывая открытую ошибку: https://github.com/Excel-DNA/ExcelDna/issues/241. Я попробовал обходной путь здесь, и это не помогло
Есть ли способ вручную настроить перенаправление привязки таким образом, чтобы плагин обязательно его подхватил, или теперь работают автоматические перенаправления привязки?
Сообщение об ошибке:
System.IO.FileLoadException
HResult=0x80131040
Message=Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source=Azure.Identity
StackTrace:
at Azure.Core.Pipeline.DiagnosticScopeFactory..ctor(String clientNamespace, String resourceProviderNamespace, Boolean isActivityEnabled, Boolean suppressNestedClientActivities, Boolean isStable)
at Azure.Core.Pipeline.ClientDiagnostics..ctor(ClientOptions options, Nullable`1 suppressNestedClientActivities)
at Azure.Identity.CredentialPipeline..ctor(TokenCredentialOptions options)
at Azure.Identity.CredentialPipeline.<>c.<.cctor>b__17_0()
at System.Lazy`1.CreateValue()
at System.Lazy`1.LazyInitValue()
at Azure.Identity.CredentialPipeline.GetInstance(TokenCredentialOptions options, Boolean IsManagedIdentityCredential)
at Azure.Identity.InteractiveBrowserCredential..ctor(String tenantId, String clientId, TokenCredentialOptions options, CredentialPipeline pipeline, MsalPublicClient client)
at Azure.Identity.InteractiveBrowserCredential..ctor()
at DataTool.SyncConfigFiles.<Sync>d__0.MoveNext() in C:\Repros\CT---DataTool\Data Tool\SyncConfigFiles.cs:line 38
Я считаю, что мне нужно перенаправление привязки к V6.0.1.0, которое упаковано в xll, но ничего из того, что я пытаюсь сделать, похоже, не помогает.
Я ожидал, что смогу включить автоматическое перенаправление привязки, как было рекомендовано, чтобы решить проблему в Azure SDK. Однако ExcelDNA, похоже, не поддерживает это, и проблема не исчезает.
Есть ли способ вручную настроить перенаправление привязки таким образом, чтобы плагин обязательно его подхватил, или теперь работают автоматические перенаправления привязки?
В Excel-DNA автоматические перенаправления привязки не поддерживаются, необходимо вручную настроить перенаправления привязки в файле App.config
или Web.config
.
<configuration>
<runtime>
<assemblyBinding xmlns = "urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name = "System.Diagnostics.DiagnosticSource" publicKeyToken = "cc7b13ffcd2ddd51" culture = "neutral" />
<bindingRedirect oldVersion = "0.0.0.0-6.0.1.0" newVersion = "6.0.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
.xll.config
, который использует Excel-DNA.Добавьте пользовательскую цель в файл .csproj
, чтобы скопировать App.config
в соответствующие файлы .xll.config
.
<Target Name = "CopyAppConfig" AfterTargets = "ExcelDnaBuild">
<Message Importance = "High" Text = "Copy $(TargetPath).config to $(TargetDir)MyAddIn-AddIn[64][-packed].xll.config" />
<Copy SourceFiles = "$(TargetPath).config" DestinationFiles = "$(TargetDir)MyAddIn-AddIn.xll.config" />
<Copy SourceFiles = "$(TargetPath).config" DestinationFiles = "$(TargetDir)MyAddIn-AddIn-packed.xll.config" />
<Copy SourceFiles = "$(TargetPath).config" DestinationFiles = "$(TargetDir)MyAddIn-AddIn64.xll.config" />
<Copy SourceFiles = "$(TargetPath).config" DestinationFiles = "$(TargetDir)MyAddIn-AddIn64-packed.xll.config" />
</Target>
Образец данных:
Теперь он может успешно взаимодействовать с хранилищем BLOB-объектов.
Проверьте, подходит ли вам приведенное ниже решение?