Do binding redirects in app.config for class libraries do anything?
我经常使用的VS解决方案由一个可执行项目(控制台应用程序、Web应用程序)和许多类库项目组成,这些项目都由可执行文件引用。
在处理nuget和安装包时,通常会为每个项目创建一个
当我构建解决方案并使用主可执行项目的二进制文件时,我看到构建输出中的所有类库项目程序集以及相应的
在启动主可执行文件时,类库程序集的配置文件会有任何效果吗?或者只是可执行文件的
我试着在网上研究这个问题,从我读到的内容来看,不可执行程序集的
如果是这样的话,如果这些
我在这个主题上发现了这些现有的堆栈溢出问题,但它们被接受的答案实际上是矛盾的,即使它们被标记为彼此的副本。
为什么nuget在nuget包更新期间向库项目添加带有assemblybinding的app.config?
应用程序中是否需要bindingRedirect.config文件或所有程序集?
第一个问题的公认答案提到app.config文件实际上是在编译期间使用的,这意味着它们可能有效。像msdn和msbuild这样的源代码在这里被引用,作为它在编译期间使用的证明。不幸的是,我对msbuild不够精通,无法理解它是如何被使用的,以及它是否真的是一个有效的论点。
有人能描述一个示例场景来证明类库的带有绑定重定向的app.config可以做任何事情吗?我有多个具有类似设置的应用程序-Web应用程序引用多个库项目,每个库项目都有自己的nuget包等,根据我的个人经验,在运行时不考虑库项目中的程序集绑定。
根应用程序(web/console)中指定的web或app config绑定仅起作用。我的所有库项目都设置为app.config文件的"复制到输出目录"设置为"不复制"-这样我的输出文件夹就不会与dll及其配置文件混在一起。
下面是一个链接,说明如何加载程序集,在哪里搜索程序集以及程序集的顺序。不,在本文中他们在哪里讨论单个项目配置文件。
希望有帮助。
根据这篇旧的msdn文章:
0因此,只有设置了
有关isolationaware的更多信息,您可以阅读另一篇更深入的msdn文章。
ISOLATIONAWARE_MANIFEST_RESOURCE_ID is used primarily for DLLs. It
should be used if the dll wants private dependencies other than the
process default. For example, if an dll depends on comctl32.dll
version 6.0.0.0. It should have a resource of type RT_MANIFEST, ID
ISOLATIONAWARE_MANIFEST_RESOURCE_ID to depend on comctl32.dll version
6.0.0.0, so that even if the process executable wants comctl32.dll version 5.1, the dll itself will still use the right version of
comctl32.dll.
不,只有可执行文件的
令人惊讶的是,msdn提供了这个伟大的来源:https://social.msdn.microsoft.com/forums/vstudio/en-us/e13194df-6308-4cbe-973c-f6a462f43eae/how-can-wcf-library-dll-access-application-settings?referer=http://social.msdn.microsoft.com/forums/vstudio/en-us/e13194df-6308-4cbe-973c-f6a462f43eae/how-can-wcf-library-dll-access-application-settings?referer=http://social.msdn.microsoft.com/forums/vstudio/en-us/e13194df-6308-4cbe-973c-f6a462f43eae/how-can-wcf-library-dll-access-application-settings?论坛
通常只有一个配置文件,即可执行(.exe.config,web.config)的配置文件。
任何程序集重定向都必须放在可执行文件的配置文件中。
需要使用configurationManager类手动加载DLL的配置文件。另请参见与库(dll)的"app.config"等效的问题。