将 VB.NET Winforms 应用程序移植到 C#

2023-11-26

是否有任何“好的”资源可将 VB.NET winforms 应用程序移植到 C#?我确信有软件可以翻译代码,但我希望同时重构代码。保持当前的形式是有问题的,因为它使用了 VB.NET 允许的一些“不良设计”实践,并且会使未来的维护进一步复杂化。这里有人经历过这个过程吗?你是怎么做的?您使用了翻译/重构方法吗?您是否只是使用最终产品来重新创建功能,而没有查看大部分功能的当前代码库?您(集体)会推荐什么?

Update:

正如我告诉 Grauenwolf 的那样,保留当前语言会带来以下问题:

  • 无法轻松添加功能。 VB.NET 并不是一种我非常精通的语言。我确实很欣赏学习该语言以移植它的讽刺意味,但未来的维护将需要考虑到那些不了解 VB.NET 的人。
  • 应用程序的其余部分已移植到 C#(事实上,很久以前);我们想要添加的所有功能都取决于应用程序的解耦(现在它的耦合非常紧密)。我的选择是要么用我不太熟悉的语言重构它,要么用我理解的语言重构它。

对于任何投票否决该问题的人,我不太确定why你做到了;关心的不是我是否应该将其留在 VB.NET 中;而是我应该将其保留在 VB.NET 中。令人担忧的是,如果现在不移植它,未来的成本会是多少。如果我打算花费大量费用来修复它,为什么不采取额外的步骤并使其可供未来的程序员维护呢?

作者注:我已经很久没有看过这个问题了,最近有一个回复,所以我将我的“答案”移到了问题中并删除了“答案”(因为它不是真正的答案)。


根据我使用一些混合 VB 和 C# 项目的大型应用程序的经验,我建议将其保留在 VB.NET 中。如果设计存在问题,那就修复它们,但将整个事情转换为 C# 对我来说听起来像是一种混乱、不必要的干扰。

两种语言之间的非风格差异非常小,因此很难看到强制转换的功能需求。 (Visual Studio 2003 中有一个旧错误,它排除了以特定方式混合 C# 和 VB 项目的某些项目引用链,但这是我遇到的唯一一个实际障碍。)

个人开发人员当然倾向于偏爱其中一种风格,但要完全转换需要做大量工作,才能品味不同风格的语法糖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 VB.NET Winforms 应用程序移植到 C# 的相关文章

  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • UDP SocketException - 通常只允许每个套接字地址使用一次

    尽管这里有很多非常相似的问题 但提供的答案都没有帮助我 这让我很难过 我有一个非常大的管理系统 我的任务是为其编写一些 UDP 数据包发送 接收 我已经编写了一个原型 一切都很好 所以我开始将我的代码合并到所述系统中 然而 我现在弹出了一个
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • Jquery“包含”多个值

    我在文档中找到了包含文本 thetext 的所有 div 并且我正在更改此文本 div contains thetext not has each function this text this text anotherTextAddedB
  • 在数据库中保存枚举的方法

    将枚举保存到数据库的最佳方法是什么 我知道Java提供了name and valueOf 将枚举值转换为字符串并返回的方法 但是还有其他 灵活的 选项来存储这些值吗 有没有一种聪明的方法可以将枚举变成唯一的数字 ordinal 使用不安全
  • RStudio 未找到 RTools

    我安装了 R RStudio 和 devtools 下面省略了一些输出 并进行了更新 我还安装了最新版本的 Rtools Check R version R Version platform 1 x86 64 w64 mingw32 OUT
  • 如果遇到非有限值(NA、NaN 或 Inf),如何强制出错

    Matlab 有一个我想念的条件调试标志 dbstop if infnan 此处描述 如果设置 此条件将在以下情况下停止代码执行 Inf or NaN遇到 IIRC Matlab没有NA 与在每次赋值操作后测试所有对象相比 如何在 R 中以
  • Mac OS 下有没有办法将数据发送到另一个进程的标准输入?

    我想知道是否有一个 API 无论它多么晦涩难懂 它都允许某人将数据发送到另一个进程的stdin在Mac OS X下流 在Linux下 如果我没记错的话 你可以使用文件系统 proc访问这些流 当然需要正确的权限 我不知道 马赫端口 有人吗
  • 获取代码片段中的命名空间

    微软链接here列出了我们可以使用的三种方法 但是我们如何获取当前的命名空间呢 我看到有一个类似的问题 但答案是使用宏 它不能解决这个特定问题 NameSpace 可以执行以下操作
  • 浏览器刷新时随机全屏背景图像

    我使用我在网上找到的这个脚本 每当刷新浏览器时就会有一个随机背景图像 CSS body background no repeat center center fixed webkit background size cover moz ba
  • 嵌套属性可以与继承结合使用吗?

    我有以下课程 Project Person Person gt 开发商 Person gt Manager In the Project模型我添加了以下语句 has and belongs to many people accepts ne
  • 在 Typescript 中,如何区分 Node 和普通 Javascript 错误类型?

    我有以下功能 Retrieves a component template from filesystem const getComponentTemplate async p string Promise
  • 在javascript中将对象移向一点[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我为此在数学上苦苦挣扎 我需要将一个物体均匀地移向一个点 我在 x 500 y 250 处有一个点 在 0 0 处有一个对象 如果移动速度为 1 我将如何计算出要获得该点 我需要以
  • 如何按 POJO 属性降序对列表进行排序?

    我有这样的 POJO 类学生 class Student private int score private String FirstName Getters and setters 我正在像这样创建 ArrayList public st
  • 在富文本框中创建换行符

    我需要帮助为 RichTextBox 创建新行 但在使用 CheckBox 时我无法使用它 它保持重叠而不是创建新的单词行 尝试使用的方法rtbdisplay text display envrionment newline 我的代码中的示
  • 如何在Java中显示树形层次结构?

    我的数据库中有一个名为 Process 的表 该进程表有3个字段 进程号 进程名 进程父进程id 现在我想以图形格式显示这个父子层次结构 那么您能否向我提出以下建议 Q1 为了从数据库获取数据并将数据存储在该数据结构中 哪种数据结构更好 Q
  • 如何在 IE 中使用 JQuery 隐藏和显示 SELECT 选项

    我试图从下拉列表中隐藏一些选项 jQuery 的 hide and show 在 Firefox 和 Chrome 中工作得很好 但在 IE 中就不那么幸运了 有什么好主意吗 根据浏览器检测隐藏和显示选项 在许多可能的方法中 此方法需要浏览
  • Mysql 表名不能大写

    我需要更改 mysql 接受大写和小写表名 select from users 上面的查询工作正常 但下面的查询不起作用 select from USERS 这取决于您的系统 主要值是 Unix Windows 和 Mac OS 您需要将系
  • firebase 消息服务可以 android:exported="false" 吗?

    想确认是否可以设置android exported false 例如 ID 服务和消息服务 我通过保持测试android exported false 和通知工作正常
  • param: _* 在 Scala 中意味着什么?

    作为 Scala 2 9 1 的新手 我有一个List Event 并想将其复制到Queue Event 但以下语法会产生Queue List Event 反而 val eventQueue Queue events 由于某种原因 以下工作
  • 了解 iBeacon 数据:功率字段和其他字节

    我是蓝牙系统的新手 我正在尝试了解新的苹果技术 iBeacon 使用的数据 已经有一些很好的答案解释了它是如何工作的 我一直在阅读我能找到的所有内容 特别是蓝牙规范 尽管如此 我仍然遗漏了一些要点 我将首先举一个例子 我正在使用设置广告数据
  • 如何在linux中使用cx_freeze创建要在windows中使用的包

    如何在 Linux 中使用 cx freeze 创建一个可在 Windows 中使用的包 如 exe 或 bin 文件 我在 Linux 中测试了 cx freeze 但在 Linux 和 Windows 中制作软件包是未知的 例如 cxf
  • 将 VB.NET Winforms 应用程序移植到 C#

    是否有任何 好的 资源可将 VB NET winforms 应用程序移植到 C 我确信有软件可以翻译代码 但我希望同时重构代码 保持当前的形式是有问题的 因为它使用了 VB NET 允许的一些 不良设计 实践 并且会使未来的维护进一步复杂化