Как я могу ссылаться на WindowsBase в .Net5? [дубликат]

Я пишу библиотеку классов .NET 5, которая содержит следующий код:

      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 = нейтральный, PublicKeyToken = 31bf385ad364e35.

Я пытался добавить ссылку на WindowsBase.dll с этого пути:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.8\WindowsBase.dll

Но я получаю следующую ошибку: ссылка недействительна или не поддерживается.

Странно то, что Freezable указан в документации Microsoft под .NET 5 . Возможно, проблема в том, что я использую WindowsBase.dll, предназначенную для .NET Framework, но я не знаю, где будет версия .NET 5.

Есть идеи, как я могу решить эту проблему и скомпилировать свой код?

Спасибо!

1 ответ

Я нашел решение, но оно делает библиотеку классов совместимой только с приложениями Windows.

В файле проекта измените это:

        <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

К этому:

        <PropertyGroup>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>True</UseWPF>
  </PropertyGroup>
Другие вопросы по тегам