C# IO 不适用于 x64 或仅在任何 CPU 上的 x86 配置

Posted

技术标签:

【中文标题】C# IO 不适用于 x64 或仅在任何 CPU 上的 x86 配置【英文标题】:C# IO doesn't work on x64 or on x86 configuration only on Any CPU 【发布时间】:2021-03-05 09:46:36 【问题描述】:

最近我遇到了一个非常奇怪的 IO 问题,我注意到当我将项目配置从“任何 CPU”更改为 x64 或 x86 输入输出停止工作。即使这个简单的代码不起作用,我也无法创建任何文件。

File.WriteAllText(@"CSVTEST.csv","test");

更不用说我用来从“纳斯达克”网站下载 CSV 文件的另一个代码了。

using (FileStream fileStream = new FileStream("StockHistoryData.csv", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.nasdaq.com/api/v1/historical/" + symbol + "/stocks/2010-11-14/2020-11-14");
    request.Method = WebRequestMethods.Http.Get;
    request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;

    const int BUFFER_SIZE = 16 * 1024;

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    
        using (var responseStream = response.GetResponseStream())
        
            var buffer = new byte[BUFFER_SIZE];
            int bytesRead;

            do
            
                bytesRead = responseStream.Read(buffer, 0, BUFFER_SIZE);
                fileStream.Write(buffer, 0, bytesRead);
             while (bytesRead > 0);
        
    
 

我没有收到任何错误或警告,只是没有创建文件。

我正在考虑将项目配置改回“任何 CPU”,但不幸的是我做不到,因为我使用的是 Microsoft ML 库,该库仅适用于 x64 或 x86 配置。所以我不太可能继续使用“任何 CPU”配置。

也许有人已经遇到过这个问题,在互联网上我没有找到任何相关信息。

我也在考虑动态更改配置,但我认为这有点糟糕的编码。更不用说这不会稳定运行

【问题讨论】:

“不工作”到底是什么意思? 他们只是不像在任何 CPU 上配置时那样创建 csv 文件。没有错误或警告只是不创建文件。 也许你检查错地方了?尝试使用绝对路径,检查是否有效。 成功了)非常感谢,我从没想过不同的配置会使用另一个文件路径。 【参考方案1】:

事实证明,当您更改项目配置时,即使文件位于项目文件夹中,您也应该使用绝对路径 为我工作。 File.WriteAllText(@"C:\Users\VladMishyn\Desktop\DIPLOM1\ASIX\ASIX\bin\Debug\CSVTEST.csv", "test");

【讨论】:

1.始终使用绝对文件路径。 2.使用GetFolderPath而不是硬编码文件路径。

以上是关于C# IO 不适用于 x64 或仅在任何 CPU 上的 x86 配置的主要内容,如果未能解决你的问题,请参考以下文章

socket.io 广播不适用于 React

socket.io 不适用于传输:['xhr-polling']

将 MVC 项目“任何 CPU”转换为 x64 - 无法加载程序集

DataGridViewComboBoxColumn 自动调整大小不正确或仅在选择时正确

gitlab ci:手动或仅在 master 时运行构建作业

Parse.com 推送通知延迟或仅在 Android 应用重启后