类库(.NET Core)与Xamarin中的PCL

时间:2016-10-24 17:37:03

标签: xamarin.android .net-core portable-class-library

我正在使用.NET Standard,并且发现奇怪的是,如果我为.NET Core类库(xproj)和可移植类库(csharp)指定了以下project.json,则只能正确引用后者来自Xamarin.Android项目:

{
  "supports": {},
  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1"
  },
  "frameworks": {
    "netstandard1.4": {}
  }
}

我可以添加两个作为参考,dotnet update按预期工作(或至少没有显示错误消息),但.NET核心库未实现:

  找不到

类型或命名空间

我发现这很奇怪,因为我希望任何.NET标准定位库都能正常工作。我做错了什么或有意只有Xamarin支持PCL?

1 个答案:

答案 0 :(得分:3)

我假设你有一个.csproj用于Xamarin.Android项目,一个.xproj用于你的.NET Core类库,它以.NET Standard为目标。

相信问题可能是因为我们目前拥有的项目系统不同,以及每个项目系统都希望找到项目参考的构建程序集。

解决方法是手动编辑.csproj以包含具有正确提示路径的引用。例如:

<Reference Include="SomeOtherClassLibrary">
    <HintPath>..\SomeOtherClassLibrary\bin\$(Configuration)\netstandard1.6\SomeOtherClassLibrary.dll</HintPath>
</Reference>

您可能还需要手动将构建依赖项从Xamarin.Android添加到类库项目,以确保项目按正确顺序构建(右键单击解决方案资源管理器Build Dependencies > Project Dependencies...中的Xamarin.Android项目)

总之,不是.NET Standard目标库不能与Xamarin一起使用,或者Xamarin只支持PCL。这是项目参考和工具当前状态的怪癖,我相信它会及时改进。