无法从UWP项目中访问代码共享项目中定义的接口

时间:2017-07-19 12:24:28

标签: c# android xamarin uwp

我只是Xamarin的新手,所以我尝试在Xamarin on-line guides创建简单的 Phoneword 应用程序。

在Visual Studio中创建的解决方案包含4个不同的项目:

  1. 包含所有共享代码的便携式类库(PCL)项目
  2. 包含Android特定代码的项目
  3. 包含iOS特定代码的项目
  4. 包含通用Windows平台(UWP)特定代码的项目
  5. 这就是解决方案结构的样子:

    enter image description here

    现在在第一个项目中已经声明了一个接口:

    namespace Phoneword
    {
        public interface IDialer
        {
            bool Dial(string number);
        }
    }
    

    我现在尝试在UWP项目中使用此接口:

    using Phoneword.UWP;
    using System;
    using System.Threading.Tasks;
    using Windows.ApplicationModel.Calls;
    using Windows.UI.Popups;
    using Xamarin.Forms;
    
    [assembly: Dependency(typeof(PhoneDialer))]
    namespace Phoneword.UWP
    {
        public class PhoneDialer : IDialer
        {
          ...
    

    构建解决方案成功结束。但是当我尝试部署时 UWP项目我收到此错误:

      

    无法找到类型或命名空间名称“IDialer”(是吗?   缺少using指令或程序集引用?)

    任何人都可以告诉我这个错误的来源是什么吗?

    更新

    当我尝试部署时,还有一个错误:

      

    错误DEP0700:应用注册失败。 [0x80070005]错误   0x80070005:从位置打开文件:AppxManifest.xml失败   错误:访问被拒绝。

    我关闭了解决方案,退出Visual Studio启动并再次加载,第一个错误消失了。因此,在UWP项目中使用代码共享项目中声明的接口似乎没有任何问题。

    我得到的实际错误是由于项目正在部署时文件夹的访问权限限制。

4 个答案:

答案 0 :(得分:1)

您没有引用Phoneword文件中的PhoneDialer.cs。将其添加到顶部:

using Phoneword; // <== Add this
using Phoneword.UWP;
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.Calls;
using Windows.UI.Popups;
using Xamarin.Forms;

答案 1 :(得分:0)

我有类似的问题。修复它的方法只是重新启动Visual Studio或重新加载解决方案。

答案 2 :(得分:0)

我遇到了同样的问题,将其添加到顶部的代码中

  
    

使用静态Phoneword.MainPage;

  

它应该可以正常工作 它无法工作的原因是因为你没有引用它。由于某种原因,您为该课程导入的资产中没有此引用。

答案 3 :(得分:0)

有同样的问题。 您需要在解决方案资源管理器中右键单击Phoneword项目,然后单击“构建”以自行构建它。

然后将Phoneword项目的using语句添加到PhoneDialer文件中。

随后可以使用对IDialer的引用。