【问题标题】:Xamarin Android(Mac) persisting error: "Could not load System.Drawing"Xamarin Android(Mac) 持续错误:“无法加载 System.Drawing”
【发布时间】:2017-04-16 02:36:31
【问题描述】:

首先要明确一点,这是我尝试完成的第一个 Android 项目,所以我对这一切还是很陌生。 我一直被这个非常烦人的问题所困扰,即使删除了很多东西,我也无法再编译我的项目。在我的项目中,我添加了“系统”命名空间以使用“异常”关键字(测试数据库连接)。在此之前,一切都运行良好。但是在尝试编译后我得到了错误:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:加载程序集时出现异常:System.IO.FileNotFoundException:无法加载程序集“系统” .Drawing,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。也许它在 Mono for Android 配置文件中不存在? 文件名:'System.Drawing.dll'

所以我只是在顶部添加了“使用 System.Drawing”,但后来我读到 Xamarin Android 不支持它。所以我再次删除它并尝试删除我所做的一切尝试停止获取此异常。然后即使我将所有内容都注释掉,这个错误也会永远卡住。我可以编写“使用 System.Drawing”,而系统不会给该行一个错误,我认为这很奇怪,因为在参考文献中找不到它。我也真的不明白,因为我不画任何东西,也不认为使用 System.Drawing 中的任何东西。每当我引用“系统”包时,我都会收到此错误,因为某些 android 文件依赖于它,所以我不能没有。我现在已经浪费了几个小时而没有任何进展,基本上我已经走到了尽头。

这是我现在的 MainActivity.cs 文件,缩小范围,这是我唯一的 .cs 文件:

using Android.Graphics;
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Gms.Maps;
using Android.Gms.Maps.Model;
using MySql.Data.MySqlClient;
using System;

namespace MapApp
{
    [Activity(Label = "MapApp", MainLauncher = true, Icon = "@mipmap/icon")]
    public class MainActivity : Activity, IOnMapReadyCallback
    {
        GoogleMap GMap;

        /// database

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
        }

        private void SetUpMap()
        {
            if (GMap == null)
            {
                FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);   
            }
        }

        public void OnMapReady(GoogleMap map)
        {
            GMap = map;
            GMap.SetLatLngBoundsForCameraTarget(new LatLngBounds(
                new LatLng(51.873176, 4.393930),
                new LatLng(51.994576, 4.598036)));
            GMap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(new LatLng(51.917879,4.481134),13));

            /*MarkerOptions markerOpt1 = new MarkerOptions();
            markerOpt1.SetPosition(new LatLng(51.917879, 4.481134));
            markerOpt1.SetTitle("Vimy Ridge");
            GMap.AddMarker(markerOpt1);*/

            CircleOptions dangerZone = new CircleOptions();
            dangerZone.InvokeCenter(new LatLng(51.917879, 4.481134));
            dangerZone.InvokeRadius(100);
            dangerZone.InvokeFillColor(0x7F00FF00);
            dangerZone.InvokeStrokeWidth(0);

            GMap.AddCircle(dangerZone);

        }
    }
}

这是我的参考资料和包的图片。(里面有很多 Xamarin 包,因为它们是加载 Google 地图所需要的):

这是我的项目结构的另一张图片,如果它可能有助于识别问题。

我试图删除我的所有包并清理我的 Big/Debug 文件夹并重建所有内容,但错误仍然存​​在。

一切都运行良好,现在我无法再构建它了。我曾经写过“使用系统”,得到了这个错误,然后再也无法摆脱这个错误。

我真的不想第二次重新启动我的项目,因为每小时都会遇到未知错误,所以非常感谢任何帮助。

【问题讨论】:

  • 您希望启用诊断日志记录,然后检查哪个引用导致错误的程序集。这很无聊,但可行。
  • 非常感谢,我就是想通过那个来解决问题的!你救了我!

标签: c# mono xamarin.android


【解决方案1】:

由于使用了诊断日志记录,我发现了问题。 结果是“MySql.Data”包加载了“System.Drawing”,这在 Xamarin.Android 中当然不受支持。

Dependency System.Drawing, Version=4.0.0.0, Culture=neutral, 
Required by MySql.Data, Version=6.9.9.0, Culture=neutral

感谢 Lexi Li 提供了我最需要的一个提示!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多