如何在 .Net5 中引用 WindowsBase?
How can I reference WindowsBase in .Net5?
我正在编写包含以下代码的 .NET 5 class 库:
public T[] ConvertToArray<T>(BitmapFrame frame, int samplesPerPixel) where T:struct
{
var pixelWidth = frame.PixelWidth;
var array = new T[pixelWidth * frame.PixelHeight * samplesPerPixel];
var stride = pixelWidth * Marshal.SizeOf(typeof(T)) *samplesPerPixel;
frame.CopyPixels(array,stride,0);//this line prevents the code from compiling
return array;
}
带有frame.CopyPixels
的行给出了以下编译错误:
CS7069 对类型 'Freezable' 的引用声称它在 'WindowsBase' 中定义,但找不到。
应引用模块 'WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf385ad364e35'
我一直在尝试从这条路径添加对 WindowsBase.dll 的引用:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.8\WindowsBase.dll
但是我收到以下错误:
引用无效或不受支持
奇怪的是 Freezable 列在 Microsoft's documentation 的 .NET 5 下。也许问题是我使用的是用于 .NET Framework 的 WindowsBase.dll,但我不知道 .NET 5 版本在哪里。
有什么办法可以解决这个问题并编译我的代码吗?
谢谢!
我找到了解决方案,但它使 class 库仅与 windows 应用程序兼容。
在项目文件中更改为:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
为此:
<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>True</UseWPF>
</PropertyGroup>
我正在编写包含以下代码的 .NET 5 class 库:
public T[] ConvertToArray<T>(BitmapFrame frame, int samplesPerPixel) where T:struct
{
var pixelWidth = frame.PixelWidth;
var array = new T[pixelWidth * frame.PixelHeight * samplesPerPixel];
var stride = pixelWidth * Marshal.SizeOf(typeof(T)) *samplesPerPixel;
frame.CopyPixels(array,stride,0);//this line prevents the code from compiling
return array;
}
带有frame.CopyPixels
的行给出了以下编译错误:
CS7069 对类型 'Freezable' 的引用声称它在 'WindowsBase' 中定义,但找不到。 应引用模块 'WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf385ad364e35'
我一直在尝试从这条路径添加对 WindowsBase.dll 的引用: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.8\WindowsBase.dll
但是我收到以下错误: 引用无效或不受支持
奇怪的是 Freezable 列在 Microsoft's documentation 的 .NET 5 下。也许问题是我使用的是用于 .NET Framework 的 WindowsBase.dll,但我不知道 .NET 5 版本在哪里。
有什么办法可以解决这个问题并编译我的代码吗?
谢谢!
我找到了解决方案,但它使 class 库仅与 windows 应用程序兼容。
在项目文件中更改为:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
为此:
<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>True</UseWPF>
</PropertyGroup>