添加 Nuget 包还会添加对其他项目的引用吗?

问题描述 投票:0回答:1

.Net 4.8 C# Api 项目,由 1 个主项目和 5 个附加类库项目组成。

我需要向类库项目之一添加功能,以便能够访问存储在 Azure KeyVault 中的值。

所以我添加了

<package id="Azure.Security.KeyVault.Secrets" version="4.1.0" targetFramework="net48" />

NuGet 包到我的类库解决方案。

反过来,这还会向类库解决方案中添加其他 9 个 Nuget 包:

System.Memory
System.Threading.Tasks.Extensions
System.ValueTuple
等等。

另外 7 个 assemblyIdentity 引用也被添加到主项目的主 web.config 中。形式如下:

<dependentAssembly>
        <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>

所以我猜测主项目知道这些被添加到附加项目中是正确的,所以也将它们添加到主项目的 web.config 中。

但是,这 7 个引用也被添加到我附加的单元测试项目的 app.config 中。

我的问题是为什么它们被添加到单元测试项目中?这是为什么?

不需要它们吗?我错过了什么吗?

任何解释都会对理解非常有帮助。我不想向这个项目提交任何不需要的参考??

c# .net nuget azure-keyvault
1个回答
0
投票

绑定重定向必须在应用程序级别应用,并且由于测试项目在技术上是另一个应用程序,因此它的

app.config
也需要修改。

您还可以在其他位置放置重定向,如运行时如何定位程序集中所述 - 这可能不是您想要的。

可以基于三个 XML 文件在不同级别配置程序集绑定行为:

  • 应用程序配置文件。
  • 出版商政策文件。
  • 机器配置文件。

此外,您可以尝试自动生成绑定:

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

有关启用/禁用自动生成绑定的更多信息,请参阅此处

© www.soinside.com 2019 - 2024. All rights reserved.