如何在ASP.NET MVC 5 WebJob项目中禁用预编译?
如何禁用ASP.NET WebJob项目的aspnet_merge编译?
要解决WebJob项目触发不必要的aspnet_merge并导致版本错误的问题,你可以通过修改WebJob项目的.csproj文件来禁用相关编译流程,具体操作如下:
方法1:通过项目属性禁用预编译与aspnet_merge
直接在WebJob项目的.csproj文件中添加以下配置,覆盖默认的MSBuild属性:
<PropertyGroup> <!-- 禁用视图编译(WebJob无.cshtml文件,无需此步骤) --> <MvcBuildViews>false</MvcBuildViews> <!-- 明确禁用aspnet_merge工具执行 --> <EnableAspNetMerge>false</EnableAspNetMerge> <!-- 彻底关闭发布前预编译流程(可选,进一步避免预编译相关操作) --> <PrecompileBeforePublish>false</PrecompileBeforePublish> </PropertyGroup>
将这段代码插入到.csproj文件的任意<PropertyGroup>节点中(如果没有合适的节点,可自行新建一个)。
方法2:覆盖AspNetMerge目标(更彻底的禁用)
如果方法1未能完全阻止aspnet_merge运行,可以在.csproj文件末尾添加一个空的AspNetMerge目标,覆盖默认的目标逻辑:
<Target Name="AspNetMerge"> <!-- 空目标,替代原有的AspNetMerge执行逻辑 --> </Target>
原理说明
WebJob项目虽然没有UI文件,但如果继承了ASP.NET相关的MSBuild目标(比如通过NuGet包间接引入),会默认触发预编译流程,包括aspnet_merge。通过上述配置可以明确告知MSBuild跳过这些不必要的步骤,同时避免aspnet_merge因不识别绑定重定向而导致的版本查找错误。
修改完成后,重新构建解决方案,检查WebJob项目的构建日志,确认aspnet_merge不再执行,版本错误也会随之消失。
内容的提问来源于stack exchange,提问作者Greg Veres
相关产品推荐
相关产品推荐

