Tag: assembly binding redirect

应该兼容的不兼容的.NET标准程序集?

我有一个.NET Standard 2.0 DLL项目。 除了NETStandard.Library 2.0.1之外,它没有其他参考,一切都很好。 它由WPF应用程序引用,一切似乎都可以正常工作。 将System.Collections.Immutable 1.5.0的nuget包添加到DLL项目后,解决方案资源管理器的Dependencies根目录上会出现一个黄色感叹号。 (嗯……我现在看到感叹号仍然存在,即使我删除了这个包,但我想这是一个VS错误,因为在添加此库之前一切似乎都运行正常) 拥有这两个包,一切都很好,但是当我尝试使用ImmutableDictionary ,我得到了这个: System.IO.FileNotFoundException:’无法加载文件或程序集’System.Collections.Immutable,Version = 1.2.3.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’或其依赖项之一。 该系统找不到指定的文件。’ 看看nuget包,我知道这两个应该一起工作,因为(根据我的理解)’System.Collections.Immutable`库说它支持.NET标准2.0。 我是.NET标准世界的新手。 在我的主应用程序的bin文件夹中查看System.Collections.Immutable.dll公钥令牌,我发现它确实是b03f5f7f11d50a3a 。 但版本不同。 通常,在旧的.NET中,我会尝试在应用程序的配置文件中添加程序集重定向。 但在这里这样做似乎没有任何区别。 将此添加到我的引用DLL的WPF应用程序中: …将exception更改为: System.IO.FileNotFoundException:’无法加载文件或程序集’System.Collections.Immutable,Version = 4.0.11.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’或其依赖项之一。 该系统找不到指定的文件。’ 内在例外 FileNotFoundException:无法加载文件或程序集’System.Collections.Immutable,Version = 1.2.3.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’或其依赖项之一。 该系统找不到指定的文件。 这里发生了什么? 我不能一起使用这两个nuget包吗? 更新: 我现在注意到我得到的DLL版本来自System.Collections.Concurrent.dll ,而我对System.Collections.Immutable.dll感兴趣,这在我的bin文件夹中找不到…我甚至都没有找到nuget包存储在我的解决方案中的位置。 更新2: 事实certificate,当我创建具有类似设置的新解决方案(引用.NET Standard 2 […]

引用同一程序集的多个版本

是否可以在同一进程中加载​​同一个强名称程序集的多个版本? 有很多类似的问题,但没有答案似乎有效。 我问的原因是我们需要使用SomeAssembly.dll newer version (4.0.0.0) ,但是一些引用的dll依赖于这个dll的older version (3.0.0.0) 。 我尝试使用下面的程序集绑定重定向配置,但最终出现了编译错误,因为我的程序集依赖于较新版本的dll,并且此配置完全覆盖链接,并且仅使用version 3.0.0.0 。 我希望这会在运行时失败。 编译器是否在这里使用配置文件? 按照惯例,在项目中引用Version 4.0.0.0 。 Version 3.0.0.0被复制到项目输出。

migrate.exe忽略绑定重定向

我试图从EntityFramework上运行特定DLL上的migrate.exe应用程序。 此DLL引用Microsoft.Azure.KeyVault.WebKey nuget包。 当我尝试运行命令时 ./migrate MyProject.Data /startUpDirectory=C:\myDir /startUpConfigurationFile=C:\myDir\Redirect.config 我收到以下错误 错误:无法加载文件或程序集“Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6ae ed”或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULT除外:0x80131040) 通常我会说这是因为它正在寻找Newtonsoft.Json第6版而无法找到它。 但我有一个绑定重定向指向最新版本。 所以,我不明白为什么这不会重定向到版本9.0.0.0 ,它只查找版本6.0.0.0 。 我已经反编译了Microsoft.Azure.KeyVault.WebKey.dll ,我可以看到它正在引用版本6.0.0.0所以这是为什么它正在寻找该版本,但我不明白为什么它不重定向。

我可以告诉bindingRedirect始终使用最新的可用版本吗?

拥有一个ASP.NET应用程序,Web.Config文件中有以下格式的几个条目: 这些库以NuGet包的forms出现。 现在,每当我更新我的20多个NuGet包时,我会做类似的事情: 单击一下即可更新所有包。 在浏览器中打开应用程序。 看到像这样的错误。 打开我的Web.Config,找到绑定重定向条目。 查找程序集最新版本。 修改我的web.config。 更新具有绑定重定向的所有其他更新的NuGet包的步骤2 … 6。 这非常烦人。 我的问题: 有没有办法告诉bindingRedirect条目总是使用最新版本? 例如: (使用通配符告诉最新版本) 我最接近的是: (仅指定最新版本一次)

在app.config中为类库做绑定重定向会做什么吗?

我经常使用的VS解决方案包括一个可执行项目 (控制台应用程序,Web应用程序)和许多可执行文件引用的类库项目 。 在使用NuGet并安装软件包时,通常会为每个项目创建一个app.config文件,通常只包含合并重定向列表以合并引用程序集的版本。 有时候会有一些第三方库特定的内容(比如Entity Framework配置部分),但是现在让我们把它放在一边。 当我构建解决方案并使用主可执行项目的二进制文件时,我看到构建输出中的所有类库项目程序集以及相应的*.config文件( app.config文件在构建时被重命名为AssemblyName.config ) 。 启动主可执行文件时,类库程序集的配置文件是否有效? 或者只是可执行文件的app.config文件在这种情况下有效? 如果在某些类库项目上设置了一些绑定重定向,并在主可执行项目上设置了一些不同的绑定重定向 – 这些如何组合,哪些优先? 我试图在线研究这个,从我读过的内容来看,它看起来像非可执行程序集的app.config文件是无用的(关于绑定重定向)。 有人可以确认这一点或详细说明该主题吗? 如果是这样的话,如果它们只包含绑定重定向,那么在类库中创建NuGet创建的这些app.config文件实际上是不可取的吗? 我觉得NuGet不应该为类库项目创建那些绑定重定向,因为它只会增加对实际应用的设置的混淆。 我在这个主题上找到了这些现有的Stack Overflow问题,但是他们接受的答案实际上是矛盾的,即使它们被标记为彼此重复 。 为什么NuGet在NuGet包更新期间将app.config与assemblyBinding一起添加到LIBRARY项目? 是否需要bindingRedirect .config文件或应用程序中的所有程序集? 第一个问题的接受答案提到app.config文件实际上是在编译时使用的,这意味着它们可能有效。 像MSDN和MSBuild源代码这样的来源被引用作为它在编译期间使用的certificate。 不幸的是,我对MSBuild的熟练程度不足以理解它是如何被使用的,以及它是否真的是一个有效的参数。 任何人都可以描述一个示例场景来certificate带有绑定重定向的类库的app.config可以做什么吗?

程序集绑定重定向到较低版本

我试图降级NServiceBus依赖,所以而不是使用4.0.0.0来使用2.5.0.0 我正在尝试以下方式,其中任何一个似乎都不起作用。 我也试过代码库: 还有,纳达。 我浏览了msdn文档,并没有提到以向后的方式使用此function。 这可能吗?

Azurefunction绑定重定向

是否可以在azure函数文件夹结构中包含web.config或app.config文件以允许程序集绑定重定向?