Visual Basic/.NET 6代码编译失败求助:My相关成员报错
问题原因
My.Application、My.Computer这类成员是.NET Framework专属的Visual Basic应用模型组件,.NET 6及后续的.NET Core系列框架默认不包含这套组件,所以直接移植代码会出现编译错误。
替代方案
替代My.Application.CommandLineArgs
使用.NET标准库的Environment.GetCommandLineArgs()方法,它跨所有.NET版本兼容。注意该方法返回的数组第一个元素是程序自身路径,若要和My.Application.CommandLineArgs的行为(仅返回参数)一致,可跳过第一个元素:
var commandLineArgs = Environment.GetCommandLineArgs().Skip(1).ToArray();
替代My.Computer.FileSystem.GetFiles(strFolder)
使用Directory.GetFiles()方法,这是.NET标准文件操作API,功能完全覆盖原方法,还支持更多重载:
// 基本用法:获取指定文件夹下的所有文件 var files = Directory.GetFiles(strFolder); // 递归获取所有子文件夹中的文件 var allFiles = Directory.GetFiles(strFolder, "*.*", SearchOption.AllDirectories);
可选:强行启用My组件(不推荐)
如果一定要保留原代码写法,可以安装NuGet包Microsoft.VisualBasic,然后在代码中引用对应命名空间:
using Microsoft.VisualBasic.ApplicationServices; // 对应My.Application using Microsoft.VisualBasic.Devices; // 对应My.Computer
但这种方式仅适合Windows平台,跨平台兼容性差,不建议在.NET 6+项目中使用。
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

