Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止.NET应用程序从GAC加载/引用程序集?_C#_.net_Assemblies_Gac - Fatal编程技术网

C# 如何防止.NET应用程序从GAC加载/引用程序集?

C# 如何防止.NET应用程序从GAC加载/引用程序集?,c#,.net,assemblies,gac,C#,.net,Assemblies,Gac,我能否以某种方式(Visual Studio中的设置)配置.NET应用程序,使其引用“本地”程序集(不在)而不是GAC中的程序集,尽管两个程序集具有相同的名称和版本 如果两个程序集都是强名称(带符号),则CLR将始终从GAC加载 以下是运行时用于解析程序集引用(从)的步骤: 通过检查适用的程序集版本来确定正确的程序集版本 配置文件,包括 应用程序配置文件, 发布者策略文件和计算机 配置文件。如果 配置文件位于 远程计算机,运行时必须 找到并下载应用程序 首先是配置文件 检查程序集名称之前是否已绑

我能否以某种方式(Visual Studio中的设置)配置.NET应用程序,使其引用“本地”程序集(不在)而不是GAC中的程序集,尽管两个程序集具有相同的名称和版本

如果两个程序集都是强名称(带符号),则CLR将始终从GAC加载

以下是运行时用于解析程序集引用(从)的步骤:

  • 通过检查适用的程序集版本来确定正确的程序集版本 配置文件,包括 应用程序配置文件, 发布者策略文件和计算机 配置文件。如果 配置文件位于 远程计算机,运行时必须 找到并下载应用程序 首先是配置文件

  • 检查程序集名称之前是否已绑定到,如果是, 使用以前加载的程序集。 如果以前请求加载 程序集失败,请求失败 立即加载而不尝试加载 大会

  • 检查全局程序集缓存。如果在那里找到程序集,则 运行时使用此程序集

  • 组件探针(…某些材料省略…)

  • 如同一条后面所述:

    没有对没有强名称的程序集进行版本检查,运行时也没有 在全局程序集缓存中签入没有强名称的程序集

    因此,如果您能够从本地程序集中删除签名,应用程序将使用它而不是GAC中的签名

    有关运行时绑定机制的详细信息,请参阅


    还提供了绑定过程的详细概述。

    要成功部署.NET Framework应用程序,必须了解公共语言运行库如何定位并绑定到构成应用程序的程序集。默认情况下,运行时会尝试与构建应用程序时使用的程序集的确切版本绑定。配置文件设置可以覆盖此默认行为

    您可以使用Windows软件开发工具包(SDK)中包含的程序集绑定日志查看器(Fuslogvw.exe)查看日志文件中的绑定信息


    s

    如果可以更改本地dll的版本号,则可以使用oldVersion属性使用dll版本重定向。可以为本地程序集使用强名称: 请浏览本页:

    也应考虑修改编译程序集的版本号,如这里所描述的:

    您可以使用这些程序集并将其合并到一个库中来绕过它。

    您看到这个答案了吗?听起来你正在尝试做同样的事情。可能是重复的