限制为程序集添加引用

hun*_*ind 1 c# visual-studio-2010

我有一个包含几个程序集的框架.由于代码的逻辑分离,创建了多个程序集.该框架应该分发给开发人员和最终用户.开发人员应该使用少量框架程序集来开发他们的模块.但是所有其他程序集都需要运行模块.在几个程序集中,我希望只有少数程序集可以添加到项目引用中,并限制其他程序集添加到开发人员项目引用中.换句话说,我希望开发人员不应该使用程序集中包含的类型,这些类型不适用于插件开发.最好的方法是什么?我想避免将一些对象传递给那些程序集中每种类型的构造函数并验证它们.

我可以利用AppDomain或类似的东西,它标识的类型是由主应用程序或模块创建的.如果它不是主应用程序,则抛出异常或不初始化.建议对架构进行任何更改.

Jon*_*eet 5

一种选择是将"受限制"程序集中的类型设置为内部而不是公共,然后InternalsVisibleToAttribute在这些受限制的程序集中添加以允许从其他"框架"程序集访问它们.

这样终端开发人员仍然可以添加对"受限制"程序集的引用(并且可能应该这样做,以确保它们被复制用于部署)但是不能使用这些程序集中的任何类型.

编辑:另一种选择可能是使用ILMerge在最后构建一个程序集 - 所以它是一个真正的部署单元,即使你最初因为分离原因将其拆分出来.

另一种选择是将所有内容合并到一个项目中,并依靠代码审查,命名空间和常识来获取分离违规.