在 Web.config 中添加程序集时,我可以指定任何版本或范围吗?

发布于 2024-10-08 09:23:29 字数 1344 浏览 3 评论 0原文

在我的工作中,GAC 中有一个核心程序集,许多应用程序都会引用它。 我不想在每次发布新的核心版本时更改所有生产站点的 Web 配置。有没有办法为程序集版本指定范围或通配符?

像这样的东西:

    <compilation debug="false">
    <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="MyCore,Version=*, Culture=neutral, PublicKeyToken=55b47eca7ec17c50"/> <!-- Does not work -->
    <add assembly="*"/>
  </assemblies>
</compilation>

At my work there is a core assembly in the GAC that many applications reference.
I do not want to change the web configs of all my production sites each time a new core version is published. Is there a way to specify a range or a wildcard for assembly versions?

Something like:

    <compilation debug="false">
    <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="MyCore,Version=*, Culture=neutral, PublicKeyToken=55b47eca7ec17c50"/> <!-- Does not work -->
    <add assembly="*"/>
  </assemblies>
</compilation>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不及他 2024-10-15 09:23:29

.NET 中没有任何方法可以直接指定版本范围,但程序集名称的“版本”部分是可选的。您应该能够删除它以搜索程序集的所有版本。

添加用于编译的程序集元素 (ASP .NET 设置架构)

我过去所做的是使用程序集的短名称,换句话说:

<add assembly="MyCore" />

也就是说,有时保留程序集名称(带有版本)很有用,因为它可以防止旧代码在以下情况下被执行:该站点部署不正确。 MSBuild 可用于在结构化构建实验室内重写 web.config 文件,但它需要一些手动配置。

There isn't any method in .NET to directly specify a range of versions, but the "version" component of the assembly name is optional. You should be able to remove it to search for all versions of the assembly.

add Element for assemblies for compilation (ASP.NET Settings Schema)

What I've done in the past is use the short name of the assembly, in other words:

<add assembly="MyCore" />

That said, sometimes keeping the assembly name (with version) is useful since it prevents old code from being executed if the site is deployed incorrectly. MSBuild can be used to rewrite the web.config files inside of a structured build lab, but it requires a bit of manual configuration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文