asp.net - 在 ASP .NET 页面中注册任何版本的程序集

标签 asp.net assemblies version

如何在 ASP .NET 页面上使用任何可用版本的程序集?

例如,我在计算机上的网页上添加 Crystal Reports 控件之前使用此标记:

<%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

但是,如果我在具有不同版本 Crystal Reports 的计算机上安装此网页,则必须更改程序集属性的版本部分:

<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

有什么办法可以通过指示 ASP .NET 使用最新的可用版本或指定所需的最低版本来避免这种情况吗?

最佳答案

只需删除 Version= 部分即可:

<%@ Register Assembly="CrystalDecisions.Web, , Culture=neutral, 
                       PublicKeyToken=692fbea5521e1304"
             Namespace="CrystalDecisions.Web" 
             TagPrefix="CR" %>

但是,这只适用于后期绑定(bind)。如果您实际上针对特定版本的程序集编译任何程序集,您将需要在 Web.config 文件中进行程序集绑定(bind)重定向。

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="CrystalDecisions.Web"
                  publicKeyToken="692fbea5521e1304"
                  />

        <bindingRedirect oldVersion="10.5.3700.0"
                 newVersion="13.0.2000.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

关于asp.net - 在 ASP .NET 页面中注册任何版本的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5276965/

相关文章:

asp.net - 间歇性 "Failed to load viewstate"错误

c# - MEF 的 DirectoryCatalog 是如何工作的?

java - 我们可以更改 java 使用的 unicode 版本吗?

c++ - 获取VS C++项目的版本号

linux - Linux 上 libgcc_s.so.1 的次要版本

asp.net - 如何在 SQL 注入(inject)攻击后进行清理?

c# - 找不到方法 : 'System. String System.String.Format(System.IFormatProvider, System.String, System.Object)

ASP.NET 菜单父菜单项在启用浮出控件时在悬停时突出显示

assemblies - 如何将程序集版本从 sln 获取到持续集成贴标机中?

c# - 在探测程序集时,为什么搜索的 publicKeyToken 在以管理员身份运行与以普通用户运行时不同?