【问题标题】:Sharing code modules between WinForms and ASP applications?在 WinForms 和 ASP 应用程序之间共享代码模块?
【发布时间】:2013-10-18 18:10:18
【问题描述】:

我在 VB 中的 ASP 应用程序有许多我想与 WinForms VB 应用程序共享的模块。但是 VB.ASP 模块包含在 WinForms 应用程序中不必要、有用或不可能包含的内容。我可以使用编译器指令来使一个文件在两个项目中都能工作吗?

【问题讨论】:

  • 在另一个模块(文件)中包含您的内容,不要将它们带入 VB 应用程序,只有 ASP 应用程序。您可以拥有多个 MODULE 文件,它们被视为只是一个文件,但是您可以将内容划分为一个项目中的一个 MODULE,另一个项目中的另一个 MODULE,或者两者都在一个中。

标签: asp.net vb.net winforms winforms-to-web


【解决方案1】:

查看这个问题:VB.NET Preprocessor Directives 它展示了如何使用预处理器指令

所以,基本上你需要将文件包含到 Winforms 应用程序中,并在这些文件中添加如下行:

#IF MYDEFINEFORASPNET Then
    require/import/define functions which are only for .net
#End if

#if MYDEFINEFORWINFORM Then
    require/import/function for only win form
#End if

define generic functions

实现此目的的另一种方法 - 重构代码以将通用部分移动到单独的 dll 中,该 dll 可用于两个项目而无需重新编译

【讨论】:

  • 我已经在网上查看了很多信息。但是所有的例子都显示 CODE 被改变了,而不是 IMPORTS。没有人提到如何区分为 ASP 和 WinForms 生成的代码。
  • 您对代码被更改的问题,而不是关于导入,更新答案的问题
【解决方案2】:

自定义值确实是一种方式,但我想我还有另一种方式。

The _MYTYPE compilation constant 由 Visual Studio 管理,包含“Windows”、“控制台”、“Web”和类似的细节。我可以将 IMPORTS 语句包含在 #If 中,如下所示:

#If _MYTYPE = "Web" Then
    Imports System.Web.HttpRequest
#End If

不幸的是,重构似乎确实需要这样做。他们可能不会让我这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2022-11-30
    • 2018-05-23
    • 1970-01-01
    相关资源
    最近更新 更多