如何禁用MSBuild自动将<Reference>升级为<ProjectReference>的功能
禁用MSBuild自动替换DLL引用为项目引用的方法
要阻止MSBuild将项目A中的DLL引用自动转换为项目引用(ProjectReference),可以通过以下两种方式实现:
1. 针对单个DLL引用添加属性
直接编辑项目A的.csproj文件,在对应DLL的引用节点中添加<SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>属性,让MSBuild跳过查找同名项目并转换引用类型的逻辑。示例配置如下:
<Reference Include="ProjectB"> <HintPath>..\CustomBuildOutput\ProjectB.dll</HintPath> <!-- 核心配置:禁用自动转换为项目引用 --> <SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties> <Private>true</Private> </Reference>
注意:HintPath要指向自定义MSBuild生成的、包含额外类的ProjectB.dll路径,避免引用到项目默认输出的标准DLL版本。
2. 全局禁用项目引用自动转换
如果需要对项目A中所有DLL引用生效,可以在项目的PropertyGroup节点中添加全局配置:
<PropertyGroup> <DisableImplicitProjectReferences>true</DisableImplicitProjectReferences> </PropertyGroup>
这种方式会禁用所有隐式的项目引用转换,适合需要批量处理的场景。
补充提示
修改配置后,记得重新加载项目,确保MSBuild读取到最新的引用设置。
内容的提问来源于stack exchange,提问作者Daniel Patrício
相关产品推荐
相关产品推荐

