C# 当前上下文C错误中不存在名称“CrossMedia”

C# 当前上下文C错误中不存在名称“CrossMedia”,c#,android,xamarin,media,C#,Android,Xamarin,Media,我正在为Xamarin Studio中的媒体插件编写代码,显然我在尝试构建应用程序时出现了以下错误: 当前上下文中不存在名称“CrossMedia” 我一直在设法解决这个问题。下面是代码 using System; using Relate.Model; using Xamarin.Forms; using System.IO; namespace Relate.Views { public partial class EditMemberPage : ContentPage

我正在为Xamarin Studio中的媒体插件编写代码,显然我在尝试构建应用程序时出现了以下错误:

当前上下文中不存在名称“CrossMedia”

我一直在设法解决这个问题。下面是代码

using System;
using Relate.Model;
using Xamarin.Forms;

using System.IO;

namespace Relate.Views
{

    public partial class EditMemberPage : ContentPage
    {
        public EditMemberPage()
        {
            InitializeComponent();
        }

        async void TakeaPhoto_OnClicked(object sender, EventArgs e)
        {

          if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakePhotoSupported)
            {
                // Supply media options for saving our photo after it's taken.
                var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory = "Receipts",
                    Name = $"{DateTime.UtcNow}.jpg"
                };

                // Take a photo of the business receipt.
                var file = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
            }

            if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakeVideoSupported)
            {
                // Supply media options for saving our video after it's taken.
                var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory = "Videos",
                    Name = $"{DateTime.UtcNow}.mp4"
                };

                // Record a video
                var file = await CrossMedia.Current.TakeVideoAsync(mediaOptions);
            }

            // Select a photo. 
            if (CrossMedia.Current.IsPickPhotoSupported)
            {
                var photo = await CrossMedia.Current.PickPhotoAsync();
            }

            // Select a video. 
            if (CrossMedia.Current.IsPickVideoSupported)
            {
                var video = await CrossMedia.Current.PickVideoAsync();
            }
        }

        async void SaveButton_OnClicked(object sender, EventArgs e)
        {
            var famMemberItem = (FamMember)BindingContext;
            await App.Database.SaveFamMemberAsync(famMemberItem);
            await Navigation.PopAsync();
        }
    }
}

使用Plugin.Media添加;在文件的开头

使用Plugin.Media添加;在文件开头

尝试在使用插件之前先初始化插件,如文档中所述

await CrossMedia.Current.Initialize();

如文档所述,在使用插件之前,先尝试初始化插件

await CrossMedia.Current.Initialize();

我知道这是一个老问题,但在VS2017中使用NuGet package Manager CLI安装软件包时,我遇到了同样的问题:

Install-Package Xam.Plugin.Media
似乎安装不是问题,但我错了。我没有意识到的是,它只是为Android项目安装的,而不是为所有项目安装的。为此,您必须右键单击顶部的解决方案,然后选择Manage NuGet Packages for Solution。单击Xam.Plugin.Media包,在相邻的窗格中,它会告诉您是否已为解决方案中的所有项目安装了它,并带有复选框。如果有任何间隙,可以选中这些框并点击Install完成安装。这是我纠正问题后的结果:


我知道这是一个老问题,但在VS2017中使用NuGet package Manager CLI安装软件包时,我遇到了同样的问题:

Install-Package Xam.Plugin.Media
似乎安装不是问题,但我错了。我没有意识到的是,它只是为Android项目安装的,而不是为所有项目安装的。为此,您必须右键单击顶部的解决方案,然后选择Manage NuGet Packages for Solution。单击Xam.Plugin.Media包,在相邻的窗格中,它会告诉您是否已为解决方案中的所有项目安装了它,并带有复选框。如果有任何间隙,可以选中这些框并点击Install完成安装。这是我纠正问题后的结果:


您使用的是CrossMedia存在的命名空间吗?…如果使用没有帮助,请从nuget安装此软件包。@GraceFeng哪个软件包?@Stephane。您使用的是CrossMedia存在的命名空间吗?…如果使用没有帮助,请从nuget安装此软件包。@GraceFeng哪个软件包?@Stephane。我使用了。我收到一个错误,说明找不到类型或命名空间“Plugin”。是否缺少程序集引用?将该行代码添加到文件开头会有所帮助。我能够通过向项目类库添加插件媒体的程序集引用来构建应用程序。然而,每当我尝试用Android模拟器拍照时,我都会遇到相机错误。无法访问摄像头。您的Android仿真器是否设置了摄像头?如果没有,您将无法访问它。您还需要将NuGet软件包添加到应用程序中的每个项目中,因此PCL以及您拥有的Droid、iOS和UWP中的任何项目。你不应该添加一个程序集引用,只使用NuGet Package。我已经添加了一个NuGet包扩展,但是我的相机仍然有问题。模拟器有一个屏幕截图选项,我有。我收到一个错误,说明找不到类型或命名空间“Plugin”。是否缺少程序集引用?将该行代码添加到文件开头会有所帮助。我能够通过向项目类库添加插件媒体的程序集引用来构建应用程序。然而,每当我尝试用Android模拟器拍照时,我都会遇到相机错误。无法访问摄像头。您的Android仿真器是否设置了摄像头?如果没有,您将无法访问它。您还需要将NuGet软件包添加到应用程序中的每个项目中,因此PCL以及您拥有的Droid、iOS和UWP中的任何项目。你不应该添加一个程序集引用,只使用NuGet Package。我已经添加了一个NuGet包扩展,但是我的相机仍然有问题。模拟器有一个屏幕截图选项。