当我使用这样的网络路径构造一个新的DirectoryInfo时:
using Delimon.Win32.IO;
DirectoryInfo di = new DirectoryInfo(@"\\a\path\to\a\place\you\are\not\allowed\to\know")我知道路径是正确的,因为当我复制粘贴时它会在我的浏览器中打开。但是我发现了一个错误:
"System.OverflowException:算术操作导致溢出。“
这是我能给出的所有呼叫堆栈信息。
System.OverflowException: Arithmetic operation resulted in an overflow.
at Delimon.Win32.IO.Helpers.GetFileInformation(String path)
at Delimon.Win32.IO.FileSystemInfo.Refresh()
at Delimon.Win32.IO.DirectoryInfo..ctor(String dir)路径有67个字符长。所以这不是一条很长的路。
由于构造System.OverflowException对象,我找不到任何关于DirectoryInfo的文档。
有什么帮助吗?
发布于 2018-04-30 10:08:55
我刚才得到了这个准确的错误
System.OverflowException:“算术操作导致溢出。”
并设法隔离了病因。
下面一行给出了错误:
string[] files = Delimon.Win32.IO.Directory.GetFiles(@"d:\temp");这句话来自我正在重写的一个旧应用程序。我知道它在旧版本中工作,但在新版本中不起作用,因此我删除了新版本中的所有内容,并留下了一个空表单。我还是有错误的。
然后,我创建了一个新的空项目,并在其中尝试了代码,它起了作用。因此,即使我删除了我的新应用程序中的所有内容,我仍然会发现错误。这表明设置有问题。所以我开始比较项目文件。
在*.csproj文件中,有以下一行:
<Prefer32Bit>false</Prefer32Bit>它既不在旧的应用程序中,也不在新的项目中。
在创建一个新项目时,默认情况下会选中“Project -> Properties -> Build -> General32位”,但在我的新应用程序中,没有检查这个选项。我不记得自己不检查它,所以我不知道它是如何被不检查的。一旦我检查了它,我就不会再得到错误了。
发布于 2017-06-19 21:25:10
我当时使用的是Delimon.Win32.IO.DirectoryInfo,它显然是一个旧的、未维护的代码库。我应该用System.IO.DirectoryInfo的
https://stackoverflow.com/questions/44639910
复制相似问题