向不同项目中的所有Web应用程序Web页面添加命名空间引用

Evi*_*lDr 5 vb.net asp.net webforms asp.net-webpages

我有三个项目的解决方案:

  • 项目1 - 可重复使用的逻辑/方法(适用于所有其他项目)
  • 项目2 - 网站
  • 项目3 - Web应用程序(项目2转换为Web应用程序)

在项目1中,我有这个代码:

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Web
Imports System.Runtime.CompilerServices

Namespace MyCompany

    Public Module DataExtensionMethods

        <Extension()> _
        Public Function SortByColumn(ByVal dt As DataTable, ByVal SortString As String) As DataTable
            ' Amazing stuff here...
            Return dt
        End Function

    End Module

End Namespace
Run Code Online (Sandbox Code Playgroud)

在老式的Project 2网站中,通过向web.config添加以下内容,可以轻松访问此扩展方法:

<pages controlRenderingCompatibilityVersion="4.0" validateRequest="true" clientIDMode="AutoID">
    <namespaces>
        <add namespace="MyCompany.DataExtensionMethods"/>
    </namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)

扩展方法立即可用于对DataTable变量的所有引用.

但是,我不能在应用程序范围内使用它在Project 3(Web应用程序)中工作.

在每个页面中,我可以添加:

Imports MyCompany.DataExtensionMethods
Run Code Online (Sandbox Code Playgroud)

然后,这使得扩展方法可用,但是如何在每个页面上不必使用Imports的情况下实现相同的应用程序范围?

在项目2和3中,我使用"添加引用"对话框定义了对项目1的引用.复选框显示仍然存在,但Project 3无法看到 Project 1的逻辑.似乎有很多人看到与WebAPI相同的行为,但没有看到网页应用程序.

Eri*_*rik 3

在 VB 中,您可以通过在解决方案资源管理器中右键单击项目并选择属性来为项目设置全局导入的命名空间。

在引用选项卡上,底部是导入的命名空间部分。您可以MyCompany.DataExtensionMethods在那里添加您的名称空间,它就像您输入了Imports MyCompany.DataExtensionMethods所有源文件一样。

在此输入图像描述