为什么 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 引用了 TestClassLibrary。 TestClassLibrary 引用 Newtonsoft.Json NuGet 包(它可以是任何其他包)。
现在是奇怪的部分。 TestClassLibrary 中的任何引用都会成为 public 对 TestApp 的引用。我可以在 TestApp classes 中使用任何特定于 NewtonsoftJson 的命名空间,尽管 TestApp.csproj 和 project.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.
我可以通过以下步骤重现这个问题:
- 按照您的示例创建两个项目,确保在选项 window 中选中以下选项。
Intellisense 不适用于 TestApp 项目中的 Newtonsoft.Json。但是,TestApp 构建成功。
重新打开解决方案,Intellisense 和构建都有效。
这应该是 NuGet 的问题,我在 Nuget GitHub 问题页面 (https://github.com/NuGet/Home/issues/1629) 上发现了一个类似的开放问题。
我遇到了一个与通用 Windows 平台相关的问题,这让我抓狂。
假设我的解决方案中有两个项目——第一个是 Universal Windows 应用程序 (TestApp),第二个是 Universal [=50] =] class 库 (TestClassLibrary)。 TestApp 引用了 TestClassLibrary。 TestClassLibrary 引用 Newtonsoft.Json NuGet 包(它可以是任何其他包)。
现在是奇怪的部分。 TestClassLibrary 中的任何引用都会成为 public 对 TestApp 的引用。我可以在 TestApp classes 中使用任何特定于 NewtonsoftJson 的命名空间,尽管 TestApp.csproj 和 project.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.
我可以通过以下步骤重现这个问题:
- 按照您的示例创建两个项目,确保在选项 window 中选中以下选项。
Intellisense 不适用于 TestApp 项目中的 Newtonsoft.Json。但是,TestApp 构建成功。
重新打开解决方案,Intellisense 和构建都有效。
这应该是 NuGet 的问题,我在 Nuget GitHub 问题页面 (https://github.com/NuGet/Home/issues/1629) 上发现了一个类似的开放问题。