0

我有一个 dll (DesiredApp.dll) 中的 Web 表单应用程序,其中包含一些我想在其他应用程序中使用的类 (DesiredClass.cs),例如 Windows 或控制台应用程序。我创建了一个函数 IsWeb() 来验证它是 Web 应用程序还是 Windows 应用程序(它实际上测试 HttpContext.Current 是否为空)。所以我可以(我猜)使用 http 的东西,比如会话、请求、响应,只有当它们可用时。当我尝试在我的 WindowsFormsClient 或 ConsoleClient 中添加对 DesiredApp.dll 的引用时,它不会编译。我无法添加参考。但是 DesiredApp.dll 中的 nUnit 测试在 nUnit 中工作,即使它是一个 Windows 应用程序。nUnit 如何在基于 WebForms 的 dll 中运行测试?

我怎样才能在我的 Windows/控制台应用程序中做这样的事情?

如何编写仅在 http 应用程序中使用 http 内容(如 HttpContext、Session、Request、Response)的库,但在 Windows 应用程序中不使用?

4

2 回答 2

1

我找到了。我接受过使用 .net framework 4 客户端配置文件编译应用程序的培训。

如果您使用完整版本的 .net 框架(转到项目属性/应用程序/目标框架并设置为 .net 框架 4,不要使用客户端配置文件),您可以使用 System.Web dll 编译 windows 应用程序。

如果您想知道您是在 Windows 应用程序还是 Web 应用程序中运行库,并且想知道是否可以使用 Session,请执行

public virtual bool IsWeb()
{
    return (System.Web.HttpContext.Current != null);
}

public virtual bool IsSessionEnabled()
{
    return IsWeb() && (System.Web.HttpContext.Current.Session != null)
}
于 2015-02-14T18:00:40.887 回答
0

你可以建立一个类库,其中包含你需要做的引用,然后将它们公开给 GAC。然后您可以轻松地在其他 .net 应用程序解决方案中使用它们。

于 2013-07-31T06:28:09.420 回答