You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VS2022跨解决方案引用类时如何使用完全限定命名空间

VS2022跨解决方案引用类时如何使用完全限定命名空间

嗨,刚接触VS2022和C#的话,跨解决方案引用确实容易踩坑,我来一步步给你讲清楚怎么弄:

首先要明确:光加using指令是没用的,因为两个解决方案是独立的,你得先把包含类B的项目/程序集引入到新解决方案里,之后才能用命名空间调用类。

第一步:关联目标项目或引用程序集

你有两种方式可以实现:

  • 方式1:把包含类B的项目直接加入新解决方案
    打开你的新解决方案,右键点击解决方案根节点 → 添加现有项目,然后找到C:\Users\un\source\repos\A路径下的.csproj项目文件,选中添加即可。
  • 方式2:引用已编译的程序集(DLL文件)
    先回到类B所在的项目,点击顶部菜单栏的生成生成解决方案,确保编译成功。然后在项目的bin/Debug(或bin/Release)目录下会生成对应的DLL文件。
    切换到新解决方案的目标项目,右键点击依赖项添加项目引用,在弹出的窗口里切换到浏览标签,找到刚才生成的DLL文件并添加。

第二步:使用完全限定命名空间或简化调用

完成引用后,你就可以正常调用类B了:

  • 完全限定命名空间写法:直接在代码里用命名空间+类名的形式调用,比如:
    // 直接用完全限定名实例化类B
    var myBInstance = new A.B();
    
  • 用using指令简化:在代码顶部添加命名空间的using指令,之后就可以直接用类名:
    using A; // 引用命名空间A
    
    // 直接使用类B
    B myBInstance = new B();
    

为什么你之前的写法报错?

你写的using B;是错误的,因为B类名而不是命名空间,你的命名空间是A,所以应该引用using A;。而且更关键的是,你当时还没有把包含类B的项目/DLL引入到新解决方案里,VS找不到对应的类型,所以才会报CS0246错误。

额外注意点

  • 确保两个项目的.NET版本兼容(比如都是.NET 6或者.NET Framework 4.8),否则可能会出现引用失败的问题。
  • 如果后续修改了类B所在的项目,记得重新生成该项目,新解决方案里的引用才会同步更新。

备注:内容来源于stack exchange,提问作者TakeMe2YourLeader

火山引擎 最新活动