File.Exists 在 C# 中工作,但在 VB.NET 中不起作用
Posted
技术标签:
【中文标题】File.Exists 在 C# 中工作,但在 VB.NET 中不起作用【英文标题】:File.Exists is working in C#, but doesn't work in VB.NET 【发布时间】:2015-10-14 04:55:36 【问题描述】:我遇到了一个奇怪的问题。
VB.NET - 不工作
Dim stringData As String = Encoding.UTF8.GetString(buffer, 0, buffer.Length)
If Not [String].IsNullOrEmpty(stringData) AndAlso System.IO.File.Exists(stringData) Then
Process.Start(stringData)
End If
工作
If Not [String].IsNullOrEmpty(stringData) AndAlso System.IO.File.Exists(stringData) Then
Process.Start(stringData)
End If
Process.Start(stringData)
C# - 工作:
string stringData = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
if (!String.IsNullOrEmpty(stringData) && System.IO.File.Exists(stringData))
Process.Start(stringData);
谁能解释我做错了什么?
【问题讨论】:
我不确定,但这似乎是人为的问题。你确定文件路径是完全相同相同的吗? 插入一个断点并检查每个代码库的stringData
变量是什么。
它是如何“不工作”的?如果它没有启动程序,请检查异常。也许您使用的相对路径对于 C# 编译的 EXE 是正确的,但是 VB.NET 编译的 EXE(也就是说,在不同的位置)该路径不再有效。
而“工作 - 不工作”代表...
@Alexander 我怀疑在 VB 版本中,您的缓冲区比您预期的要大一个字节。在 C# 中,您在声明数组时给出数组中元素的数量,而在 VB 中,您给出最后一个元素的索引。
【参考方案1】:
试试这个方法:
Dim stringData As String = GetFolderPath(SpecialFolder.MyDocuments) & "\my.exe" 'For example
If Not String.IsNullOrEmpty(stringData) Then
If File.Exists(stringData) Then
Process.Start(stringData)
Else
MsgBox("File couldn't be found.", vbCritical, "MyApp")
End If
End If
【讨论】:
以上是关于File.Exists 在 C# 中工作,但在 VB.NET 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Lottie AnimationView 在 iOS 中不工作,但在 Android c# 实现中工作
GeoSpatial 查询在 mongo shell 中工作,但在 C# 驱动程序中没有过滤
GeoSpatial 查询在 mongo shell 中工作,但在 C# 驱动程序中没有过滤
DeviceIoControl 在 C++ 和 C# 中工作,但在 C++/CLI 中调用时返回 ERROR_INVALID_FUNCTION
C# MciSendString 记录,在调试中工作,未部署
整数文字 '115000159351' 在存储到 'Int' 时溢出,但在一个项目中工作正常,但在另一个项目中工作正常 - Swift