如何在VB.NET ASP.NET网站中访问Module或类文件的Friend方法
解决方案
以下是针对该问题的4种可落地实现方案:
- 方案1:将现有网站项目(WSP)迁移为Web应用程序项目(WAP)
Web应用程序项目会将全站所有代码(包括页面后台、类文件、Module)统一编译为单个固定名称的程序集,同一程序集内Friend修饰的成员天然可互相访问,不会出现跨程序集访问限制问题。操作方法为在Visual Studio 15中新建VB ASP.NET Web应用程序项目,将现有页面、资源、配置等代码迁移到新项目即可。 - 方案2:固定网站项目编译的程序集名称,配合
InternalsVisibleTo特性使用
发布网站时在发布设置界面勾选「使用固定命名和单页程序集」,取消「允许更新此预编译站点」选项,编译后生成的App_Web_*系列程序集名称会固定不再随机变化,此时可在定义Friend方法的项目/文件头部添加对应配置即可生效:
Imports System.Runtime.CompilerServices <Assembly: InternalsVisibleTo("固定后的页面程序集名称")>
- 方案3:将通用方法封装到独立类库项目
新建VB类库项目,把全站通用的Friend方法放到该类库中,网站项目引用该类库后,在类库项目的AssemblyInfo.vb文件中添加InternalsVisibleTo配置,指定网站项目的程序集名称即可跨程序集访问Friend成员。 - 方案4:修改非App_Code目录下类文件的生成操作
如果要将通用类/Module放在和页面同级的目录下使用,右键选中该文件,在属性面板将生成操作属性从默认的「内容」修改为「编译」,该文件会和同目录下的页面代码编译到同一个程序集,同一程序集内Friend成员可直接访问,无需额外配置。
内容的提问来源于stack exchange,提问作者Jason P Sallinger
相关产品推荐
相关产品推荐

