如何将控制台C#应用程序添加到ASP.NET网站
本文关键字:ASP NET 网站 添加 应用程序 控制台 | 更新日期: 2023-09-27 18:26:19
我的问题与此线程有些相似:如何在Asp.Net网站中包含另一个项目Console Application.exe?
然而,我被要求问一个新问题,因为我的问题没有得到回答,我无法对该帖子发表评论。
所以,我的情况是:我有一个C#应用程序,它被编译为exe(目前)。它作为桌面应用程序运行良好。现在我需要在网站上托管应用程序,这样用户就可以通过浏览器使用它。
我认为asp.net将是一个很好的起点,并创建了一个网站应用程序。现在,我该如何引用C#应用程序文件,以便从新的WebSite应用程序中调用这些方法?
我曾尝试在控制台应用程序中包含构建后事件,以将文件复制到网站文件夹,但我仍然无法引用它们。
对于我正在尝试做的事情,任何其他建议也欢迎:)
编辑:我希望应用程序在服务器上运行,然后我将在用户的浏览器上显示其输出。
假设我理解你想要什么:
1-您需要将您的功能转移到Class Library
项目。
2-在您的网站中添加对DLL
的引用
3-根据自己的喜好使用功能。
但是,不能直接使用类型为.exe
的程序集文件中的功能。
如果你不需要运行控制台应用程序,只需要使用控制台应用程序中定义的方法,那么我会在一个单独的类库中重构这些方法,然后在我的web应用程序中添加对类库的引用。然后在网页中构建一个接口,调用适当的方法。
下面是MSDN中的一个演练,向您展示如何使用类库
您不应该在服务器上运行控制台应用程序,因为这是BAD!在Windows上,为每个请求创建一个全新的进程不是一个好主意。
重构控制台应用程序以采用TextWriter,或者(在我看来更好,但可能需要更多的重构)以某种逻辑方式返回结果。
在极端情况下,你只需发送Console.Out到库和Response.Output.就可以逃脱惩罚
你似乎不太可能真的只想这么做,但这可能是你能逃脱的最起码的事情,也不是很糟糕。
按照Console.WriteLine("Hello World")
的思路思考:
var lib = new MyLib(Console.Out);
lib.DoSomething();
这种情况下的ctor是:
public MyLib(TextWriter writer)
{
_writer = writer;
}
其中DoSomething()是:
public void DoSomething()
{
_writer.WriteLine("Hello World");
}
然后,在web上,您将输出需要输出的内容,并通过首先输出<pre>
标签,然后执行以下操作将输出放在那里:
var lib = new MyLib(Response.Output);
lib.DoSomething();
public string TellMeSomething()
{
return "Hello World";
}
我几乎不想推荐这个,因为我认为完全重构它会更好。因此DoSomething变成了TellMeSomething,实现类似于:
public string TellMeSomething()
{
return "Hello World";
}