如何将控制台C#应用程序添加到ASP.NET WebSite?

时间:2015-12-10 19:08:50

标签: c# asp.net .net visual-studio

我的问题有点类似于这个主题:How to include another project Console Application exe in an Asp.Net website?

然而我被指示提出一个新问题,因为我的问题没有得到回答,我无法对该帖子发表评论。

所以,我的情况是这样的:我有一个C#应用程序,编译成一个exe(现在)。它可以作为桌面应用程序正常工作。现在我需要在网站上托管应用程序,以便用户可以通过浏览器使用它。

我认为asp.net是一个开始创建WebSite应用程序的好地方。现在我该如何引用C#应用程序文件,以便从新的WebSite应用程序调用这些方法?

我试图在控制台应用程序中包含post build事件以将文件复制到WebSite文件夹,但我仍然无法引用它们。

我正在尝试做的任何其他建议也欢迎:)

编辑:我想在服务器上运行应用程序,然后我将在用户的浏览器上显示其输出。

3 个答案:

答案 0 :(得分:5)

假设我明白你想要的东西:

1-您需要将您的功能转移到Class Library项目。

2-添加对您网站中DLL的引用

3-根据需要使用该功能。

但是,您不能使用的是直接类型为.exe的程序集文件的功能。

答案 1 :(得分:0)

如果您不需要运行控制台应用程序并且只需要使用控制台应用程序中定义的方法,那么我将在单独的类库中重构这些方法,然后在我的Web中添加对类库的引用应用。然后在调用适当方法的网页中构建一个接口。

以下是MSDN的演练,向您展示如何Create a web application project with a class library

答案 2 :(得分:0)

您不应该在服务器上运行控制台应用程序,因为它很糟糕!在Windows上为每个请求创建一个全新的流程并不是一个好主意。

重构控制台应用程序以获取TextWriter或(在我看来更好,但可能需要更多重构)以某种逻辑方式返回结果。

在极端情况下,只需将Console.Out发送到库和Response.Output即可。

你似乎不太可能真的只想这样做,但它可能是你可以逃脱的最不重要的事情并不是很糟糕。

按照'If both scores are 0, no need to show anything If ResultHome.Value = 0 and ResultAway.Value = 0 then exit sub else 'Otherwise, set the value of the loop to whatever the score is If ResultHome.Value <> 0 then LoopVal = ResultHome.Value else LoopVal = ResultAway.Value endif endif 'Make as many textboxes visible as necessary For i = 1 To LoopVal MyFormName.Controls("tbScore" & i).Visible = True Next 前往:

的方向思考
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true //Obviously think about the logic of what to return in various cases
}
在这种情况下,ctor是:

Console.WriteLine("Hello World")

DoSomething()是:

var lib = new MyLib(Console.Out);
lib.DoSomething();

在网络上,您将输出您需要输出的内容并将输出放在那里,首先输出public MyLib(TextWriter writer) { _writer = writer; } 标记然后执行此操作:

public void DoSomething()
{
   _writer.WriteLine("Hello World");
}

我几乎不想推荐这个,因为我认为完全重构它会更好。所以DoSomething变成了TellMeSomething和实现类似的东西:

<pre>