我想将旧项目转换为 netcoreapp2.0 ,但我有三个问题
为什么NetCoreApp 2中不存在以下API?
虽然这些功能似乎已经实施
.NET Core API Reference version 2.0
我如何访问这些?
答案 0 :(得分:3)
GetBuffer()
已被删除。您应该使用GetBuffer()
而不是TryGetBuffer()
方法。如果您有兴趣(source):
删除
GetBuffer
的原因是因为它在一般情况下被破坏,并且只适用于实际构建MemoryBuffer本身的人并且知道正在使用的底层缓冲区的确切部分。例如,MemoryBuffer上有一些构造函数,它们接受缓冲区和一个起始索引,并且起始索引根本没有反映在GetBuffer返回的内容中,因此在不知道起始索引的情况下调用它的其他人可能会查看外部的内存。 MemoryStream的。这就是为什么TryGetBuffer使用ArraySegment,因此它可以将起始索引和长度传递给调用者,这样他们就可以适当地扩展到MemoryStream使用的底层缓冲区。
Close()
方法被删除为Dispose
的副本。来自原始issue:
using (var ms = new MemoryStream())
{
// ...
} // automatically Disposed(Closed) here
或直接致电
var ms = new MemoryStream();
// ...
ms.Dispose() // Closed here
更新:看起来有关Close
的信息仅对.NET Core< 2.0。
Here是.NET Core 2.0的Close()
方法说明。有意思的是,不推荐使用它:
请确保正确处理流,而不是调用此方法。此方法调用Dispose,指定true以释放所有资源。您不必专门调用Close方法。相反,请确保正确处理每个Stream对象。
答案 1 :(得分:1)
.NET Core 2.0中提供了Close方法,我刚刚安装了VS 2017 Prev-5.13,其中包括.Net Core 2.0 Preview,我可以使用Close方法。
.NET Core / .NET Standard中的新策略是尽可能地保持API兼容性(尽管不是完全兼容),因此大多数构建的二进制文件都与新的生态系统兼容。
之前的一些清理API的决定被颠倒过来,以保持兼容性,而不是Windows特定的。
答案 2 :(得分:0)
我发现了问题,我使用VS 2017 15.2创建项目然后我使用dotnet core 2构建它所以我必须删除obj和bin文件夹并再次构建,似乎有些依赖项设置在obj文件夹中设置。