为什么 UWP class 库项目引用被复制到主项目?

Why are UWP class library project references are getting copied to the main project?

我遇到了一个与通用 Windows 平台相关的问题,这让我抓狂。

假设我的解决方案中有两个项目——第一个是 Universal Windows 应用程序 (TestApp),第二个是 Universal [=50] =] class 库 (TestClassLibrary)。 TestApp 引用了 TestClassLibraryTestClassLibrary 引用 Newtonsoft.Json NuGet 包(它可以是任何其他包)。

现在是奇怪的部分。 TestClassLibrary 中的任何引用都会成为 public 对 TestApp 的引用。我可以在 TestApp classes 中使用任何特定于 NewtonsoftJson 的命名空间,尽管 TestApp.csprojproject.json 没有对 Newtonsoft.Json 的任何引用。这违反了 TestClassLibrary 封装,因此它的实现细节(即引用的库)变成 public,我不希望这样。

问题是——这是 UWP class 库的一项功能吗?我可以在哪里阅读它?或者这是一个 NuGet 错误?

Any reference inside TestClassLibrary becomes public to the TestApp. I can use any NewtonsoftJson-specific namespaces in TestApp classes.

我可以通过以下步骤重现这个问题:

  1. 按照您的示例创建两个项目,确保在选项 window 中选中以下选项。
  2. Intellisense 不适用于 TestApp 项目中的 Newtonsoft.Json。但是,TestApp 构建成功。

  3. 重新打开解决方案,Intellisense 和构建都有效。

这应该是 NuGet 的问题,我在 Nuget GitHub 问题页面 (https://github.com/NuGet/Home/issues/1629) 上发现了一个类似的开放问题。