在 Web.config 中添加程序集时,我可以指定任何版本或范围吗?
在我的工作中,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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
.NET 中没有任何方法可以直接指定版本范围,但程序集名称的“版本”部分是可选的。您应该能够删除它以搜索程序集的所有版本。
我过去所做的是使用程序集的短名称,换句话说:
也就是说,有时保留程序集名称(带有版本)很有用,因为它可以防止旧代码在以下情况下被执行:该站点部署不正确。 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.
What I've done in the past is use the short name of the assembly, in other words:
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.