按照 CHATGPT 指南,我在 Web 应用程序的 bin 文件夹中添加了一个控制台文件 dll(Inboundnightlybatchfile 是我的控制台文件)。要访问 dll 需要在我们的应用程序中导入。所以我写这个using Inboundnightlybatchfile;但是dll文件名没有出现在IntelliSense中,并且它抛出编译时错误。
我想将控制台文件 dll 添加到 Web 应用程序
那么,您如何共享现有应用程序中的任何代码或“其他”应用程序中的代码?
当然,为什么你已经/将这些代码放入类中。
我的意思是在你现在的项目中,你如何使用/享受一堆帮助代码和例程?
您最终得到一个类,然后在代码中创建该类的实例。
假设我有一个类包含一些有关酒店的信息?
然后向项目中添加一个类,然后在代码中简单地使用该类。
说这堂课:
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
控制台应用程序也是如此。如果您想共享该代码,请将您想要共享的控制台代码移至类中。
假设我有这个控制台应用程序。当我运行它时,它会显示我计算机上的所有驱动器。
所以,从命令提示符我有这个:
所以,现在假设我想在我的网站中使用上面的内容 - 显示/列出所有硬盘驱动器。
所以,上述控制台应用程序的代码是这样的:
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
然后我们得到这个:
那么,要“共享”代码吗?即使使用简单的简控制台应用程序,它的工作原理也与您“总是”执行此操作非常相似。
这确实意味着/表明控制台应用程序中的工作代码应该移出到控制台应用程序和现在您的 Web 应用程序都可以使用和享受的共享代码类。
但是,是一个网站,还是一个简单的控制台应用程序?
共享代码的原因和方式在 .net 中是相同的。您可以通过使用对象方法来共享代码,这在很大程度上是 .net 代码如何工作的整个基础 - 包括在系统和应用程序之间共享代码的基础。
因此,在我的 Web 应用程序中,我简单地设置了对 vbconsole.exe 的引用,现在我可以自由使用 + 使用该控制台应用程序中的任何代码。但是,如前所述,您总是共享代码吗?作为一般规则,您将将该代码移出到一个类中,然后任何其他应用程序都可以通过使用该应用程序中的公共类代码来自由使用和使用该代码。因此,控制台应用程序中的 MySharedCode 类现在可以由任何其他 .net 应用程序使用,包括该 asp.net 网站。
因此,.net“主要”是一个基于对象的系统,这是如何重用和共享 .net 代码的主要支柱和基础。您可以通过使用该代码创建类来共享此类代码,这样您现有的应用程序(控制台应用程序)就可以使用这些类,如上所示,通过简单引用 vbconsole.exe 应用程序、Web网站也可以使用+享受+使用该代码。
因此,因为类强制您将 UI 部分与代码部分分开,所以即使在简单的控制台应用程序中采用这种方法也意味着此类代码可以由任何类型的应用程序使用和使用。您可以编写另一个控制台应用程序,并引用我们上面的控制台应用程序并使用该代码。
但是,我们也可以创建一个Windows桌面程序,并再次引用vbconsole.exe应用程序。我们基于网络的应用程序也可以。
更神奇的是?您可以在 c# 或 vb.net 中使用上述类,这也没关系!