.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 中。
我的问题是为什么它们被添加到单元测试项目中?这是为什么?
不需要它们吗?我错过了什么吗?
任何解释都会对理解非常有帮助。我不想向这个项目提交任何不需要的参考??
绑定重定向必须在应用程序级别应用,并且由于测试项目在技术上是另一个应用程序,因此它的
app.config
也需要修改。
您还可以在其他位置放置重定向,如运行时如何定位程序集中所述 - 这可能不是您想要的。
可以基于三个 XML 文件在不同级别配置程序集绑定行为:
- 应用程序配置文件。
- 出版商政策文件。
- 机器配置文件。
此外,您可以尝试自动生成绑定:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
有关启用/禁用自动生成绑定的更多信息,请参阅此处。