我用C#编译一个a.dll 文件,a.dll文件又引用了第三方提供的b.dll文件。
应用程序app.exe(是一个web service)在调用 a.dll,图示说明如下:
app.exe——>a.dll ——>b.dll; 
能不能将b.dll 彻底编译到a.dll里?这样当b.dll发生改变时,我只需要重新编译a.dll,而a.dll里的函数接口不变,
这样我的应用程序app.exe(web service),就不用重新编译发布了。

解决方案 »

  1.   

    除非你有b.dll的源文件,放到a.dll中,重新編譯才行
      

  2.   

    可以,把b.dll当作资源编译在a工程中(相当于编译在a.dll里面,前提b.dll是.net工程)在a.dll中使用映射的方式调用b.dll资源
      

  3.   

    可以,把b.dll当作资源编译在a工程中(相当于编译在a.dll里面,前提b.dll是.net工程)在a.dll中使用映射的方式调用b.dll资源b.dll 是用VB写的,  对于如何把把b.dll当作资源编译在a工程中?有没有特殊的设置或操作步骤?
    请说的清楚一点,在下是新手。
      

  4.   

    把b.dll反编译了,然后代码放到a.dll的工程里去
      

  5.   


    System.Reflection.Assembly ass = null;
    ass = System.Reflection.Assembly.Load(资源);
    Type[] types = ass.GetTypes();
    for(int i = 0; i < types.length; i++) {
        if(types[i].FullName.Equals("类名")) {
            System.Reflection.MethodInfo method = types[i].GetMethod("方法名");
            //调用方法
            method.Invoke(ass.CreateInstance(types[i].FullName), new object[] {参数})
        }
    }
    资源获取:
    工程名.Properties.Resources.资源名.net 2005测试通过(VB库,C#调用)
      

  6.   

    用reflector把b.dll反编译了,把它的代码copy到a.dll中。
    一个不厚道的做法。
      

  7.   

    System.Reflection.Assembly ass = null;
    ass = System.Reflection.Assembly.Load(资源);
    Type[] types = ass.GetTypes();
    for(int i = 0; i < types.length; i++) {
        if(types[i].FullName.Equals("类名")) {
            System.Reflection.MethodInfo method = types[i].GetMethod("方法名");
            //调用方法
            method.Invoke(ass.CreateInstance(types[i].FullName), new object[] {参数})
        }
    }
    [color=#FF0000]资源获取:
    工程名.Properties.Resources.资源名     这句话是什么意思啊??
      

  8.   

    例如:
    工程名为:Hello
    导入资源名为:b.dll
    ass = System.Reflection.Assembly.Load(Hello.Properties.Resources.b);
    至于程序集的话可以通过断点查看types[i].FullName获得
      

  9.   

    ^ō^3.者同样是使用.Net开发的话...可以将b.dll作为a.嵌入资源, 编译到a.dll中, 然后利用反射访问b.dll, 最后app.exe直接引用a.dll即可...
      

  10.   

    只要a.dll重新编译过,那么静态引用a.dll的app.exe就应该重新编译和发布。除非app.exe通过反射来调用a.dll。
      

  11.   

     反射慢点,但把b.dll做为资源的加到a.dll的做法没有尝试过,呵呵又是一招啊.