开发平台都是vs2005,开发人员甲开发了网站系统A,开发人员乙开发网站系统B,两个系统App_Code下都有文件,都有自己的Web.config。
现在需要将A、B两个系统合并,让B作为A的一个子系统,并且希望B能够相对独立。现在的思路是将B系统放在一个子文件夹里,使用自己的Web.config。
现在B系统普通的页面都可以显示了,就是调用App_Code下代码的页面会报错,错误信息类似如下:
Server Error in '/' Application.
--------------------------------------------------------------------------------Could not load type 'ClsApp' from assembly 'App_Code, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.TypeLoadException: Could not load type 'ClsApp' from assembly 'App_Code, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  其中ClsApp是B系统中App_Code下的一个公共类,问题貌似是没有找到B系统bin\App_Code.dll。
请问如何解决这个问题?这个思路是否可行?多谢!

解决方案 »

  1.   

    把B的Bin拷到A的Bin 中,共用一个Bin
      

  2.   

    LovlyPuppy:这个我想到了,但是A的bin里也有个App_Code.dll,把B的bin里的App_Code.dll拷过去,就覆盖了。
      

  3.   

    个人经验(可行)
      将B系统的App_Code并在A系统的App_Code内.
      将B系统的Web.config并在A系统的Web.config内.
    以上做法是可行的.......关于楼主的做法:
    我觉得也可行,但要做一些改进:
    思路如下:
       将B系统的App_Code改个名字.这是个类包,不要与A的类包同名名
       将B系统指定到B系统的web.config.如果有两个web.config服务器不知道应用哪一个 
       (但我总系统一个虚拟机中只能用一个web.config,所以指定不到就把两个web.config合成一个吧)
       
       
        
      

  4.   

    你可以在A,B系统各发布时,选择使用强命名的程序集,这样不会发生DLL冲突
      

  5.   

    渔江晚晴:文件夹App_Code好像不能改名 :(
      

  6.   

    楼主问的是app_code
    在a网站下建一个虚拟目录.放B网站就OK
      

  7.   

    exy337:这样做是可行的,就是好像Session不可以共用。我在A系统里登录了,到B系统里取不到Session,还需要再次登录。
      

  8.   

    空间有那么贵吗?用 WebApplicationProject 可能麻烦少一点,不建议
      

  9.   

    晓风残月:自己的服务器,不用考虑空间的问题。用WebApplicationProject具体怎么做,请稍微说详细点。
      

  10.   

    现在楼主的问题就是,在A和B项目中有两个相同的App_Code.dll,对吗?
    如果是这样的话,我们可以把其中的一个项目的代码文件不编译成App_Code.dll,
    我们可以通过设置codeSubDirectories来实现:
    假设我们要对项目A进行修改:
    1. 在App_Code下新建文件夹NewFolder1,然后将App_Code下所有的.cs文件全部移到NewFolder1下面;
    2. 修改A项目的web.config:
    在compilation节点下,添加:
    <codeSubDirectories>
       <add directoryName="NewFolder1"/>
    </codeSubDirectories>
    这样编译后的dll将会是App_SubCode_NewFolder1.dll,而不是App_Code.dll
      

  11.   

    经验证,qiuji(忆秋季)的方法可行,而且Session可以公用。问题解决,感谢各位的关注!:)