当前位置: 首页 > news >正文

C# 关于CS0433错误的解决方法

C# 关于CS0433错误的解决方法

前言

    最近在VS2022中使用.NET6.0开发的时候遇到这样的问题:在调用第三方的dll库文件(FastReport.dll)时,出现CS0433错误(应用程序中引用的两个不同程序集包含相同的命名空间和类型,这会产生歧义。)。

排查

    CS0433错误:多个程序集包含相同的类型‌。当不同的程序集包含相同的类型时,编译器无法确定使用哪个类型,从而导致冲突。

    经过排查发现,该库文件中也定义了和系统库或者自己编写的dll库文件中同一个名称的类型,所以造成软件编译报错。

解决

    修改.csproj文件,在引入dll文件中添加<Aliases>CustomTypes</Aliases>

    修改后,保存重新编译,问题就解决了。

扩展

    可参考官方对于CS0433的说明:Compiler Error CS0433 - C# reference | Microsoft Learn

示例

    创建了具有模糊类型的第一个副本的DLL

// CS0433_1.cs in CS0433_1.csproj  
// or compile with: /target:library  
namespace TypeBindConflicts
{  public class AggPubImpAggPubImp { }  
}  

    使用歧义类型的第二个副本创建DLL。

// CS0433_2.cs in CS0433_2.csproj  
// or compile with: /target:library  
namespace TypeBindConflicts
{  public class AggPubImpAggPubImp { }  
}  

    因此,在项目中使用这两个库(CS0433_1.dll和CS0433_2.dll)时,使用AggPubImpAddPubImp类型会产生歧义,并导致编译器错误CS0433。

<!-- CS0433_3.csproj -->
<ProjectReference Include="..\CS0433_1\CS0433_1.csproj" />  
<ProjectReference Include="..\CS0433_2\CS0433_2.csproj" />  
// CS0433_3.cs in CS0433_3.csproj  
// or compile with: /reference:cs0433_1.dll /reference:cs0433_2.dll  
using TypeBindConflicts;public class Test
{  public static void Main(){  AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();   // CS0433  }  
}  

    以下示例显示了如何使用/reference编译器选项的别名功能或<ProjectReference>中的<Aliases>功能来解决此CS0433错误。

<!-- CS0433_4.csproj -->  
<ProjectReference Include="..\CS0433_1\CS0433_1.csproj">  <Aliases>CustomTypes</Aliases>
</ProjectReference>
<ProjectReference Include="..\CS0433_2\CS0433_2.csproj" />  
// CS0433_4.cs in CS0433_4.csproj  
// compile with: /reference:cs0433_1.dll /reference:CustomTypes=cs0433_2.dll  
extern alias CustomTypes;  
using TypeBindConflicts;  public class Test
{  public static void Main(){  // AggPubImpAggPubImp taken from CS0433_1.dll AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();// AggPubImpAggPubImp taken from CS0433_2.dllCustomTypes.TypeBindConflicts.AggPubImpAggPubImp n7 =new CustomTypes.TypeBindConflicts.AggPubImpAggPubImp();}  
}  


相关文章:

  • c++ 单例模式
  • Qwen 大模型-对话模板中system与user的区别解析
  • 孙溟㠭浅析清朝“徽派”篆刻
  • 抗辐照MCU在卫星载荷电机控制器中的实践探索
  • Doris 数据库深度解析:架构、原理与实战应用
  • 自动驾驶---SD图导航的规划策略
  • 【氧化镓】HTFB应力对β - Ga2O3 SBD的影响
  • 【Java学习笔记】包装类
  • python版若依框架开发:后端开发规范
  • 快速部署和启动Vue3项目
  • C++:用 libcurl 发送一封带有附件的邮件
  • 让DeepSeek写2025年高考作文
  • CANoe trace里面显示的Time 具体是什么意思
  • 在C语言中使用UUID作为AES加密密钥
  • 通过nohup命令,实现将指定文件快速上传到KS3
  • JAVA-springboot log日志
  • 打卡第38天:早停策略和模型权重的保存
  • C++图书管理
  • 使用 Redisson 实现分布式锁—解决方案详解
  • MySQL复杂SQL(多表联查/子查询)详细讲解
  • 美女做那种视频网站有哪些/中国舆情在线
  • 推荐聊城做网站的公司/百度关键词排名神器
  • 萍乡网站开发/网站建设公司seo关键词
  • 网络优化工程师是做什么的/长沙关键词优化新报价
  • 东山县城乡规划建设局网站/营销咨询公司排名
  • 百度网站怎么做的赚钱吗/品牌策略怎么写