如何在Web应用程序中添加控制台dll文件?

问题描述 投票:0回答:1

按照 CHATGPT 指南,我在 Web 应用程序的 bin 文件夹中添加了一个控制台文件 dll(Inboundnightlybatchfile 是我的控制台文件)。要访问 dll 需要在我们的应用程序中导入。所以我写这个using Inboundnightlybatchfile;但是dll文件名没有出现在IntelliSense中,并且它抛出编译时错误。

Click here to see the image reference

我想将控制台文件 dll 添加到 Web 应用程序

asp.net web-applications webforms console-application dllimport
1个回答
-1
投票

那么,您如何共享现有应用程序中的任何代码或“其他”应用程序中的代码?

当然,为什么你已经/将这些代码放入类中。

我的意思是在你现在的项目中,你如何使用/享受一堆帮助代码和例程?

您最终得到一个类,然后在代码中创建该类的实例。

假设我有一个类包含一些有关酒店的信息?

然后向项目中添加一个类,然后在代码中简单地使用该类。

说这堂课:

Public Class Hotel

    Public HotelName As String
    Public City As String
    Public HotelDescripiton As String
    Public FirstName As String
    Public Lastname As String


    Public ReadOnly Property FullName As String
        Get
            Return FirstName & " " & Lastname
        End Get
    End Property

End Class

然后在代码中,您可以使用该“代码”

例如:

    Dim OneHotel As New Hotel

    OneHotel.HotelName = "Super 8 Hotel"
    OneHotel.FirstName = "John"
    OneHotel.Lastname = "Smith"

    Debug.Print(OneHotel.FullName)

输出:

John Smith

控制台应用程序也是如此。如果您想共享该代码,请将您想要共享的控制台代码移至类中。

假设我有这个控制台应用程序。当我运行它时,它会显示我计算机上的所有驱动器。

所以,从命令提示符我有这个:

enter image description here

所以,现在假设我想在我的网站中使用上面的内容 - 显示/列出所有硬盘驱动器。

所以,上述控制台应用程序的代码是这样的:

Sub Main()

    Dim cMyCode As New clsSharedCode

    Dim sDriveList As List(Of String)
    sDriveList = cMyCode.GetDrives

    For Each s As String In sDriveList
        Console.WriteLine(s)
    Next

End Sub

但是,该控制台的“工作”代码已移至名为 clsSharedCode 的类。

就是这个:

Imports System.IO

Public Class clsSharedCode

    Public Function GetDrives() As List(Of String)

        Dim DriveList As New List(Of String)

        Dim allDrives As DriveInfo() = DriveInfo.GetDrives

        For Each d As DriveInfo In allDrives

            Dim s As String
            s = $"Drive:{d.Name} Volume:{d.VolumeLabel} Type:{d.DriveType} Ready:{d.IsReady}"
            DriveList.Add(s)

        Next

        Return DriveList

    End Function


End Class

好的,现在让我们在我们的网站中使用上面的内容。我们简单地设置对 vbconsole.exe 的引用。

所以,现在这个网页标记:

 <h3>Drives on computer</h3>
 <asp:ListBox ID="ListBox1" runat="server" Height="223px" Width="423px">
 </asp:ListBox>

代码隐藏

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then

        Dim cConsoleCode As New VBConsole.clsSharedCode
        Dim sDriveList As New List(Of String)
        sDriveList = cConsoleCode.GetDrives

        For Each sDrive As String In sDriveList
            ListBox1.Items.Add(sDrive)
        Next

    End If

End Sub

然后我们得到这个:

enter image description here

那么,要“共享”代码吗?即使使用简单的简控制台应用程序,它的工作原理也与您“总是”执行此操作非常相似。

这确实意味着/表明控制台应用程序中的工作代码应该移出到控制台应用程序和现在您的 Web 应用程序都可以使用和享受的共享代码类。

但是,是一个网站,还是一个简单的控制台应用程序?

共享代码的原因和方式在 .net 中是相同的。您可以通过使用对象方法来共享代码,这在很大程度上是 .net 代码如何工作的整个基础 - 包括在系统和应用程序之间共享代码的基础。

因此,在我的 Web 应用程序中,我简单地设置了对 vbconsole.exe 的引用,现在我可以自由使用 + 使用该控制台应用程序中的任何代码。但是,如前所述,您总是共享代码吗?作为一般规则,您将将该代码移出到一个类中,然后任何其他应用程序都可以通过使用该应用程序中的公共类代码来自由使用和使用该代码。因此,控制台应用程序中的 MySharedCode 类现在可以由任何其他 .net 应用程序使用,包括该 asp.net 网站。

因此,.net“主要”是一个基于对象的系统,这是如何重用和共享 .net 代码的主要支柱和基础。您可以通过使用该代码创建类来共享此类代码,这样您现有的应用程序(控制台应用程序)就可以使用这些类,如上所示,通过简单引用 vbconsole.exe 应用程序、Web网站也可以使用+享受+使用该代码。

因此,因为类强制您将 UI 部分与代码部分分开,所以即使在简单的控制台应用程序中采用这种方法也意味着此类代码可以由任何类型的应用程序使用和使用。您可以编写另一个控制台应用程序,并引用我们上面的控制台应用程序并使用该代码。

但是,我们也可以创建一个Windows桌面程序,并再次引用vbconsole.exe应用程序。我们基于网络的应用程序也可以。

更神奇的是?您可以在 c# 或 vb.net 中使用上述类,这也没关系!

© www.soinside.com 2019 - 2024. All rights reserved.