gpt4 book ai didi

c# - System.IO 和 System.Runtime 中都存在 FileNotFoundException

转载 作者:行者123 更新时间:2023-11-30 17:38:40 26 4
gpt4 key购买 nike

我已经启动了一个简单的新 ASP.NET Core 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"
}
}
}

在我的一个类(class)中,我试图抛出一个 FileNotFoundException 但我收到以下针对 .NET Platform 5.4 的错误:

CS0433 The type 'FileNotFoundException' exists in both 'System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

我尝试删除对 System.Runtime 的引用,但这是徒劳的,因为 System.IO.FileSystem 本身将其列为依赖项。

这似乎只在针对 .NET Platform 5.4 构建时表现出来,如下所示:

VS2015 screenshot

还有违规代码:

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

我是否错误配置了我的项目依赖项?是否有我应该使用的替代 IO 命名空间?

最佳答案

Have I misconfigured my project dependencies? Is there an alternative IO namespace I should be using?

您错误地配置了项目依赖项。错误消息告诉我们很多。没有可供使用的替代 IO 命名空间。相反,您需要重新配置项目依赖项以避免命名冲突。

选项 1,坚持使用 RC1 并指定兼容的依赖项

global.json> SDK 的目标 RC1。

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

project.json> 更改依赖项以使其兼容。事实证明,System.IOSystem.Runtime4.0.0 版本兼容,而您使用的测试版则不兼容。

"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 Standard 平台

如果您准备好以 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();
}
}
}

关于c# - System.IO 和 System.Runtime 中都存在 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36402190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com