C#中Settings设为public仍无法访问的问题排查
解决Settings因保护级别无法访问的问题
我看了你贴的代码,问题根源很明显——你的Settings类本身是用internal修饰的,这就是为什么跨项目访问会被阻止,哪怕你设置了项目属性也没用。下面是具体的解决步骤:
修改Settings类的访问修饰符
直接改自动生成的.Designer.cs文件里的internal sealed partial class Settings为public确实能暂时解决,但下次重新生成代码时会被覆盖。正确的做法是:- 在Visual Studio里打开被引用项目的
Settings.settings文件 - 点击设计器的空白区域,打开右侧的属性窗口
- 找到访问修饰符选项,把默认的
Internal改成Public
这样生成的代码里,Settings类就会变成public sealed partial class Settings,跨项目就能正常访问了。
- 在Visual Studio里打开被引用项目的
确认部分类的一致性
如果你自己写了Settings的部分类扩展(比如额外的方法或属性),要确保你的部分类也用public修饰,和生成的代码保持一致,避免访问级别冲突。清理并重新生成解决方案
改完设置后,最好清理整个解决方案,再重新生成一次,确保所有生成的代码都更新到最新的访问级别,避免缓存导致的问题。
另外补充一点:项目属性里的设置主要是控制程序集的可见性,但具体类的访问权限还是由类本身的修饰符决定的,这就是为什么你能访问其他public属性,但Settings不行——它本身就是internal的。
内容的提问来源于stack exchange,提问作者Kuhlk
相关产品推荐
相关产品推荐

