C# 编译时与运行时的.NET程序集绑定
为什么许多程序集绑定错误只发生在运行应用程序之后,而不是在编译时?是否有编译器开关在编译期间强制对程序集绑定进行强解析 例如: 我们有一个ASP.NET web项目,其中包含适用于webapi v5.2.6的NuGet软件包,它引用了一个类库项目,其中包含适用于webapi v5.2.3的NuGet软件包(或者版本被切换,反之亦然,我不记得具体) 项目编译得很好,我们进行了部署 在运行时,它无法启动,程序集绑定错误表明找不到5.2.3的二进制文件C# 编译时与运行时的.NET程序集绑定,c#,C#,为什么许多程序集绑定错误只发生在运行应用程序之后,而不是在编译时?是否有编译器开关在编译期间强制对程序集绑定进行强解析 例如: 我们有一个ASP.NET web项目,其中包含适用于webapi v5.2.6的NuGet软件包,它引用了一个类库项目,其中包含适用于webapi v5.2.3的NuGet软件包(或者版本被切换,反之亦然,我不记得具体) 项目编译得很好,我们进行了部署 在运行时,它无法启动,程序集绑定错误表明找不到5.2.3的二进制文件 我们打开了解决方案备份,检查NuGet cons
我们打开了解决方案备份,检查NuGet consolidate,应用了整合建议,重新构建、重新部署,一切正常。屏幕上有“特定版本”标志。但这并不能解决部署后程序集丢失或不匹配的问题。您还可以通过在app.config或web.config中添加绑定重定向来解决此问题<代码>。有了此选项,应用程序域将根据此处配置的绑定解析请求的程序集,因此需要
System.Web.Http
version5.2.5.0
的程序集将被重定向到5.2.6.0
。只要程序集是向后兼容的,这就可以工作。