我正在使用.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?
答案 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。这是项目参考和工具当前状态的怪癖,我相信它会及时改进。