Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编译时与运行时的.NET程序集绑定_C# - Fatal编程技术网

C# 编译时与运行时的.NET程序集绑定

C# 编译时与运行时的.NET程序集绑定,c#,C#,为什么许多程序集绑定错误只发生在运行应用程序之后,而不是在编译时?是否有编译器开关在编译期间强制对程序集绑定进行强解析 例如: 我们有一个ASP.NET web项目,其中包含适用于webapi v5.2.6的NuGet软件包,它引用了一个类库项目,其中包含适用于webapi v5.2.3的NuGet软件包(或者版本被切换,反之亦然,我不记得具体) 项目编译得很好,我们进行了部署 在运行时,它无法启动,程序集绑定错误表明找不到5.2.3的二进制文件 我们打开了解决方案备份,检查NuGet cons

为什么许多程序集绑定错误只发生在运行应用程序之后,而不是在编译时?是否有编译器开关在编译期间强制对程序集绑定进行强解析

例如:

我们有一个ASP.NET web项目,其中包含适用于webapi v5.2.6的NuGet软件包,它引用了一个类库项目,其中包含适用于webapi v5.2.3的NuGet软件包(或者版本被切换,反之亦然,我不记得具体)

项目编译得很好,我们进行了部署

在运行时,它无法启动,程序集绑定错误表明找不到5.2.3的二进制文件


我们打开了解决方案备份,检查NuGet consolidate,应用了整合建议,重新构建、重新部署,一切正常。

屏幕上有“特定版本”标志。但这并不能解决部署后程序集丢失或不匹配的问题。您还可以通过在app.config或web.config中添加绑定重定向来解决此问题<代码>。有了此选项,应用程序域将根据此处配置的绑定解析请求的程序集,因此需要
System.Web.Http
version
5.2.5.0
的程序集将被重定向到
5.2.6.0
。只要程序集是向后兼容的,这就可以工作。