【问题标题】:Add a namespace reference to ALL web application web pages in a different project为不同项目中的所有 Web 应用程序网页添加命名空间引用
【发布时间】:2016-01-10 05:22:30
【问题描述】:

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

  • 项目 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

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

<pages controlRenderingCompatibilityVersion="4.0" validateRequest="true" clientIDMode="AutoID">
    <namespaces>
        <add namespace="MyCompany.DataExtensionMethods"/>
    </namespaces>
</pages>

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

但是,我无法让它在应用程序范围内的项目 3(Web 应用程序)中工作。

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

Imports MyCompany.DataExtensionMethods

这使得扩展方法可用,但我如何在应用程序范围内实现相同的,而不必在每个页面上都使用 Imports?

在项目 2 和项目 3 中,我使用“添加引用”对话框定义了对项目 1 的引用。复选框显示它仍然存在,但项目 3 无法看到项目 1 的逻辑。似乎有很多人看到了same behaviour with WebAPI,但没有看到网页应用程序。

【问题讨论】:

    标签: asp.net vb.net webforms asp.net-webpages


    【解决方案1】:

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

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

    【讨论】:

    • OP 没有询问如何添加对项目的引用。他的意图是使用 MyCompany.DataExtensionMethods 命名空间的成员而不使用 Imports MyCompany.DataExtensionMethods(并且隐含地,不使用完全限定的名称)
    • @haraman 是的,这就是 Imported namespaces 部分的用途:创建全局命名空间导入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多