Visual Studio 中使用(完整)用户路径的 NuGet 依赖关系参考链接

NuGet Dependency Reference links using (full) User Path in Visual Studio

出于某种原因,在我的 iOS 项目中...使用完整目录路径的 SkiaSharp NuGet 库(参考)链接。

...其他项目不这样做。

其实,你已经在你的项目中安装了这个包,你遇到的警告是nuget包本身的问题,你应该联系作者。你不是唯一面临这个问题的人。其他工作人员也有这种异常行为。

我也遇到了这个问题,实际上当你在你的xxx.csproj文件中有这个节点时

<PackageReference Include="SkiaSharp">
      <Version>2.80.2</Version>
</PackageReference>

表示您已经成功安装了SkiaSharp nuget包。

真正的问题是这个文件

C:\Users\xxx\.nuget\packages\skiasharp.80.2\build\xamarinios1.0\SkiaSharp.targets

C:\Users\xxx\.nuget\packages\skiasharp.80.2\buildTransitive\xamarinios1.0\SkiaSharp.targets

由于某些原因,NativeReference 无法被 MSBuild 识别。挺奇怪的。

无法解析$(_SkiaSharpNativeLibraryRootDir)

进一步调查,发现Vs上有问题,NativeReference节点无法识别$(xxx) msbuild 属性值。当我输入它的完整路径时,它可以正常工作。

我也reported the issue on our DC Forum,如果你对它感兴趣,你可以给它投票,如果我没有详细描述这个问题,你可以添加任何评论,这样它会得到更多微软的关注

=====================

所以你必须联系我报告下的包作者和微软团队link。

由于这个过程可能需要很长时间,作为建议,您可以尝试以下步骤,虽然复杂但可以解决:

1) 删除C:\Users\xxx\.nuget\packages\skiasharp.80.2\build\xamarinios1.0\SkiaSharp.targets

下的这些节点

C:\Users\xxx\.nuget\packages\skiasharp.80.2\buildTransitive\xamarinios1.0\SkiaSharp.targets:

    <ItemGroup Condition=" '$(ShouldIncludeNativeSkiaSharp)' != 'False' ">
        <NativeReference Include="$(_SkiaSharpNativeLibraryRootDir)libSkiaSharp.framework" Kind="Framework" />
    </ItemGroup>

2) 输入 ios 应用程序的 xxx.csproj 文件并添加以下内容:

<ItemGroup>
            
    <NativeReference Include="C:\Users\xxx\.nuget\packages\skiasharp.80.2\build\xamarinios1.0\libSkiaSharp.framework" Kind="Framework"></NativeReference>

</ItemGroup>

3) 之后,关闭 VS 并重新启动项目以启用更改。