Xamarin.Forms:重新安装 Visual Studio 2019 后 Android.Graphics 出现问题
Xamarin.Forms : issue with Android.Graphics after reinstall Visual Studio 2019
我为 Android 运行 Visual Studio 16.9.3 开发了一个 Xamarin.forms 应用程序
一切正常,直到重新安装 Windows 10 和 Visual Studio 16.11.11 Preview 1.0I
现在我在主项目的视图中出现错误:
using Android.Graphics
无法识别:错误 CS0234 'Android' 命名空间中不存在类型或命名空间名称 'Graphics'(是否缺少程序集引用?)。
但是,在 MainActivity.cs 文件中,此代码
Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 47, 56, 40));
没问题。
我尝试按照 Microsoft 提供的有关编译器错误 CS0234 的说明进行操作,但无济于事:我看不到如何使用对象浏览器检查程序集并验证它是否包含我希望它包含的类型。
我需要做什么来解决这个问题?
非常感谢。
解决方案资源管理器中的警告:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using Android.Graphics;
namespace MemoCourses.ViewModels
{
public static class ImageResizer
{
static ImageResizer()
{
}
public static async Task<byte[]> ResizeImage(byte[] imageData, float width, float height)
{
return ResizeImageAndroid(imageData, width, height);
}
public static byte[] ResizeImageAndroid(byte[] imageData, float width, float height)
{
// Load the bitmap
Bitmap originalImage = BitmapFactory.DecodeByteArray(imageData, 0, imageData.Length);
//
float heightRequest = 0;
float widthRequest = 0;
//
var Height = originalImage.Height;
var Width = originalImage.Width;
//
if (Height > Width)
{
heightRequest = height;
float ratio = Height / height;
widthRequest = Width / ratio;
}
else
{
widthRequest = width;
float ratio = Width / width;
heightRequest = Height / ratio;
}
//
Bitmap resizedImage = Bitmap.CreateScaledBitmap(originalImage, (int)widthRequest, (int)heightRequest, false);
using (MemoryStream ms = new MemoryStream())
{
resizedImage.Compress(Bitmap.CompressFormat.Jpeg, 100, ms);
return ms.ToArray();
}
}
//
}
}
当我尝试在共享项目中使用位图时,visual studio 会通知我添加引用 Mono.Android.dll。如:
然后当我点击 Add reference to 'Mono.Android.dll'
时,效果很好。
另外,我检查了forms部分的Mono.Android.dll
路径和android部分,是一样的。
我检查并得到了这个:
Android :
c:\program files (x86)\microsoft visual studio19\preview\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
已分享:
C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
路径不一样。所以我在 MemoCoureses.csproj 共享项目文件中用预览替换了社区,重新生成,一切正常。非常非常感谢!
我为 Android 运行 Visual Studio 16.9.3 开发了一个 Xamarin.forms 应用程序 一切正常,直到重新安装 Windows 10 和 Visual Studio 16.11.11 Preview 1.0I 现在我在主项目的视图中出现错误:
using Android.Graphics
无法识别:错误 CS0234 'Android' 命名空间中不存在类型或命名空间名称 'Graphics'(是否缺少程序集引用?)。
但是,在 MainActivity.cs 文件中,此代码
Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 47, 56, 40));
没问题。 我尝试按照 Microsoft 提供的有关编译器错误 CS0234 的说明进行操作,但无济于事:我看不到如何使用对象浏览器检查程序集并验证它是否包含我希望它包含的类型。
我需要做什么来解决这个问题? 非常感谢。
解决方案资源管理器中的警告:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using Android.Graphics;
namespace MemoCourses.ViewModels
{
public static class ImageResizer
{
static ImageResizer()
{
}
public static async Task<byte[]> ResizeImage(byte[] imageData, float width, float height)
{
return ResizeImageAndroid(imageData, width, height);
}
public static byte[] ResizeImageAndroid(byte[] imageData, float width, float height)
{
// Load the bitmap
Bitmap originalImage = BitmapFactory.DecodeByteArray(imageData, 0, imageData.Length);
//
float heightRequest = 0;
float widthRequest = 0;
//
var Height = originalImage.Height;
var Width = originalImage.Width;
//
if (Height > Width)
{
heightRequest = height;
float ratio = Height / height;
widthRequest = Width / ratio;
}
else
{
widthRequest = width;
float ratio = Width / width;
heightRequest = Height / ratio;
}
//
Bitmap resizedImage = Bitmap.CreateScaledBitmap(originalImage, (int)widthRequest, (int)heightRequest, false);
using (MemoryStream ms = new MemoryStream())
{
resizedImage.Compress(Bitmap.CompressFormat.Jpeg, 100, ms);
return ms.ToArray();
}
}
//
}
}
当我尝试在共享项目中使用位图时,visual studio 会通知我添加引用 Mono.Android.dll。如:
然后当我点击 Add reference to 'Mono.Android.dll'
时,效果很好。
另外,我检查了forms部分的Mono.Android.dll
路径和android部分,是一样的。
我检查并得到了这个:
Android :
c:\program files (x86)\microsoft visual studio19\preview\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
已分享:
C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
路径不一样。所以我在 MemoCoureses.csproj 共享项目文件中用预览替换了社区,重新生成,一切正常。非常非常感谢!