.Net 发布者政策:两个大会都必须在 GAC 中?

Posted

技术标签:

【中文标题】.Net 发布者政策:两个大会都必须在 GAC 中?【英文标题】:.Net Publisher Policy: Both Assemblies required to be in the GAC? 【发布时间】:2011-10-11 13:51:12 【问题描述】:

我在How to: Create a Publisher Policy 之后创建了一个发布者策略程序集。该策略将程序集从版本 1.0.0.0 重定向到版本 2.0.0.0。

只要旧程序集 (v1.0.0.0) 位于服务器上(在 GAC 中),这对我来说确实有效。是否可以从服务器中删除旧的程序集版本?

我使用的配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="Assembly.Name"
                           publicKeyToken="d24d3f23b4455982"
                           culture="neutral" />

         <bindingRedirect oldVersion="1.0.0.0"
                          newVersion="2.0.0.0"/>
       </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

【问题讨论】:

为什么要删除它? 删除不再需要的内容?一种对清洁的***。这不是绝对需要的。我想知道这是否可能。 鸡和蛋的问题,我想。不先找到程序集就找不到策略文件。 @Stefan,所以当您删除旧组件时它会停止工作?奇怪的是,如果程序集加载过程如 Richter 在他的 CLR 中通过 C# 描述的那样,它应该可以工作。但基本上你不应该删除旧版本。例如,这样您就可以在每个应用程序的基础上禁用发布者策略(通过将&lt;publisherPolicy apply="no" /&gt; 添加到其配置中)... @Dmitry,感谢您的建议。我现在正在仔细检查设置。 【参考方案1】:

真丢脸。我对汇编版本搞砸了。所以答案是:是的,它可以在没有旧程序集的情况下工作。

【讨论】:

以上是关于.Net 发布者政策:两个大会都必须在 GAC 中?的主要内容,如果未能解决你的问题,请参考以下文章

.NET 4.0 DataAnnotations GAC/EntityFramework 冲突

ASP.Net 应用程序中奇怪的 GAC 错误

共享程序集GAC

如何从 GAC 中提取程序集?

使用 sharepoint 2007 在 Gac 或 bin 中的 Web 部件 dll

为啥将 dll 从 GAC 复制到 project\bin 文件夹