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