ymj19830801 - 2008-1-14 10:27:00
ymj19830801 - 2008-1-14 14:33:00
我的另一种整合方法是使用BBS的DLL文件,我增加一个个人空间模块.比如 "builtin_worksmodule.xml",(名字我发现加上builtin_就可以在后台显示成内置模块)并且在space/modul/blog下增加一个CS文件WorksModule.cs,然后在项目里生成DLL文件,然后替换我网站BIN目录下对应的文件,这样一切正常,我是把论坛DISCUZ.WEB的文件全部放到我网站根目录下BBS文件夹.但是这样不能使用我原来网站的类库文件,所以我把该文件WorksModule.cs放到我网站的app_code下,去掉DLL里的WorksModule.cs文件,这样编译也不会出错,但是在论坛后台里就是显示模块当前无法正常工作.百思不得其解.无奈之下我只好采取上边的办法把discuz.web.dll删除掉,把discuz.web下的所有CS文件都放到我网站app_code下于是就出现了上边的情况,所有内置模块都无法正常工作.
ymj19830801 - 2008-1-14 14:55:00
如果采用2楼我提到的方法把WorksModule.cs放到我网站APP_CODE下,编译不会出错,但是就是后台显示模块无法正常工作,我怀疑是不是漏掉了什么步骤,程序流程我一直是参考其它几个模块来做的.同样的WorksModule.cs文件我在外边discuz .web项目里编译后再把DLL考进来就能正常工作
Sitwo - 2008-1-14 15:15:00
楼主您好,我来回答一下您的提问
1, Discuz!NT的内置模块的确是通过配置文件名前缀为builtin_来判断是否为内置模块
2, Discuz!NT内置模块使用了反射技术, 您将代码复制到了您的项目的App_Code下, 那么编译生成出的程序集已经发生了改变, 因为您没有描述, 我们先假定其名字为 "我的程序集".
由于您仅是复制代码, 所以命名空间并没有发生变化,
由上分析, 您应该通过修改内置模块的配置文件, 即builtin_为前缀的配置文件中的controller属性.
以builtin_userinfomodule.xml为例
将其controller修改为 Discuz.Space.Modules.builtin.forum.UserInfoModule, 我的程序集
如果您还有什么疑惑, 可以继续发帖提问, 感谢您的支持
ymj19830801 - 2008-1-14 15:28:00
Discuz.Space.Modules.builtin.forum.UserInfoModule
这个地方我注意到了,而且也改过,拿我做的例子来说我改成了 Discuz.Space.Modules.builtin.forum.Discuz.Space.Modules.WorksModule, Discuz.Web"
会是"Discuz.Web"命名空间的问题吗?
虽然我把那些CS文件放到了APP_CODE文件夹下,但是所有的类还是在各自的命名空间下啊,如果要改,那该怎么改?
ymj19830801 - 2008-1-14 15:39:00
刚才在百度上又查了下程序集和命名空间的区别,如果要改成程序集该怎么改,我不知道放到APP_CODE下之后"我的程序集"是什么啊,这个该怎么查看?
ymj19830801 - 2008-1-14 15:45:00
程序集是项目名吗?
我的网站是用原来VS英文版建立起来的,里边好象也没有项目文件类型,我是装了几个补丁后才可以正常打开BBS的项目文件的.然后在解决方案里把BBS的项目加了近来.我们的网站本身没有.csproj文件,你看上边的截图是"D:\...."开头的.
是不是要把它转换成项目才算是程序集?如果要转换成项目,这种方法可不可以.我新建一个空的网站乡目,然后把里边的文件直接复制到我原来网站里是不是就可以了
ymj19830801 - 2008-1-15 9:22:00
我等了半天了,为什么还没人回?
Sitwo - 2008-1-15 9:22:00
您好, 正确的方法是安装vs2005的sp1, 然后新建的类型为Web Appliaction, 若希望查看程序集的名称, 可以在项目上选择 属性->应用程序->程序集名称 在文本框中的就是您的程序集名称
ymj19830801 - 2008-1-15 9:33:00
好的,我再试试