簡體   English   中英

System.IO和System.Runtime中都存在FileNotFoundException

[英]FileNotFoundException exists in both System.IO and System.Runtime

我已經開始了一個簡單的新的ASP.NET核心Web項目,它需要讀取文件的內容。

在新的類庫(包) (Visual C#> Web)項目中,默認情況下,該項目針對以下框架。 我也添加了System.IO.FileSystem

"frameworks": {
  "net451": { },
  "dotnet5.4": {
    "dependencies": {
      "Microsoft.CSharp": "4.0.1-beta-23516",
      "System.Collections": "4.0.11-beta-23516",
      "System.Linq": "4.0.1-beta-23516",
      "System.IO.FileSystem": "4.0.0",
      "System.Runtime": "4.0.21-beta-23516",
      "System.Threading": "4.0.11-beta-23516"
    }
  }
}

在我的一個類中,我試圖拋出一個FileNotFoundException但是我遇到了針對.NET Platform 5.4的以下錯誤:

CS0433類型'FileNotFoundException'存在於'System.IO,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'和'System.Runtime,Version = 4.0.20.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'

我已經嘗試刪除對System.Runtime的引用,但這是徒勞的,因為System.IO.FileSystem本身將其列為依賴項。

這似乎只是在構建針對.NET Platform 5.4時表現出來,如下所示:

VS2015截圖

和違規代碼:

if (!File.Exists(file))
    throw new System.IO.FileNotFoundException();

我是否錯誤配置了我的項目依賴項? 是否有我應該使用的替代IO命名空間?

我是否錯誤配置了我的項目依賴項? 是否有我應該使用的替代IO命名空間?

您錯誤配置了項目依賴項。 錯誤消息告訴我們很多。 沒有替代的IO命名空間可供使用。 相反,您需要重新配置項目依賴項以避免命名沖突。

選項1,堅持使用RC1並指定兼容的依賴項

global.json > SDK的目標RC1。

"sdk": {
  "version": "1.0.0-rc1-update1"
}

project.json >更改依賴項以兼容。 事實證明, 4.0.0版本的System.IOSystem.Runtime是兼容的,而您使用的測試版則不兼容。

"frameworks": {
  "net451": { },
  "dotnet5.4": {
    "dependencies": {
      "Microsoft.CSharp": "4.0.1-beta-23516",
      "System.Console": "4.0.0-beta-23516",
      "System.IO": "4.0.0",
      "System.Runtime": "4.0.0"
    }
  }
}

選項2,升級到RC2並使用NET標准平台

如果您准備好定位RC2 SDK,那么您可以定位特定的.NET平台標准。 以下是針對rc2-20221 SDK和netstandard1.3

global.json > SDK的目標RC2。

"sdk": {
  "version": "1.0.0-rc2-20221"
}

project.json>使用netstandard確保兼容的API表面區域。

"dependencies": {
  "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*"
},
"frameworks": {
  "netstandard1.3": {
    "dependencies": {
      "System.Console": "4.0.0-beta-*"
    },
    "imports": [
      "net451",
      "dotnet5.4"
    ]
  }
}

測試線束

這是一個在我的機器上構建和運行的小程序。 它使用選項1或選項2。

public class Program
{
    public static void Main(string[] args)
    {
        try
        {
            throw new System.IO.FileNotFoundException();
        }
        catch(System.Exception ex)
        {
            System.Console.Write(ex.ToString());
            System.Console.ReadKey();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM