You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps CI构建VB项目时vbc.exe.config绑定配置错误排查

问题描述

我有一个包含VB Web项目和C# Web项目的解决方案,两者均通过NuGet和packages.config引入了Microsoft.CodeDom.Providers.DotNetCompilerPlatform 3.6.0与Microsoft.Net.Compilers 4.2.0。部署至服务器时,C#项目的vbc.exe.config包含正确的绑定重定向,而VB项目的绑定重定向为不匹配的较新版本(与bin目录roslyn文件夹中的DLL不一致)。两个项目均以.NET Framework 4.8为目标框架,这导致ASPX文件动态编译失败,vbc.exe无法加载引用的程序集。本地使用VS 2022(17.4.3)构建两个项目均正常,请问是什么原因导致VB项目引入错误的vbc.exe.config?

可能原因及解决方案

原因1:VB项目编译器版本优先级冲突

VS构建VB项目时,可能优先调用全局安装的Roslyn编译器(如VS安装目录下的MSBuild\Current\Bin\Roslyn路径),而非NuGet包指定的4.2.0版本。VB项目的编译器依赖逻辑与C#项目存在差异,全局更高版本的编译器配置会覆盖NuGet包提供的vbc.exe.config。

解决方案

在VB项目的.vbproj文件中添加以下配置,强制指定使用NuGet包内的编译器路径:

<PropertyGroup>
  <VbcToolPath>$(SolutionDir)packages\Microsoft.Net.Compilers.4.2.0\tools</VbcToolPath>
  <VbcToolExe>vbc.exe</VbcToolExe>
</PropertyGroup>

添加后清理项目的bin/obj目录,重新构建部署。

原因2:绑定重定向生成配置缺失或错误

VB项目可能未正确启用绑定重定向自动生成,或配置项不完整,导致构建时生成的vbc.exe.config使用了默认系统版本的绑定规则,而非NuGet包对应的版本。

解决方案

打开VB项目的.vbproj文件,确认以下配置存在且正确:

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

保存后重新构建项目,确保绑定重定向根据NuGet包依赖正确生成。

原因3:web.config中CodeDom提供者配置不匹配

VB项目的web.config中system.codedom节点的编译器配置版本与NuGet包版本不一致,导致动态编译时加载了错误版本的编译器配置文件。

解决方案

检查并修改VB项目web.config中的system.codedom节点,确保版本号与NuGet包版本(3.6.0)一致:

<system.codedom>
  <compilers>
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4" compilerOptions="/langversion:default /nowarn:41008,40000,40008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
  </compilers>
</system.codedom>

原因4:部署时旧文件残留覆盖

服务器目标目录中可能存在旧版本的vbc.exe.config或Roslyn DLL,部署过程中未被完全替换,导致VB项目使用了错误的配置文件。

解决方案

部署前彻底清空服务器上目标部署目录的所有文件,再重新部署VB项目,避免旧文件残留干扰。

内容的提问来源于stack exchange,提问作者jmoreno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:50:17