Carl 发表于 2009-12-15 17:32:00

Type Forwarding-New Feature in .Net Framework 2.0

Post by "rickey", 2007-03-22, 16:44
-----------------------------------------------------

在.Net Framework2.0中,增加了一个新的功能--Type Forwarding(不知道如何翻译)。
这项功能使得当你在重构代码时,将一个类型MyClass 从一个程序集A移动到程序集B后,无须重新编译引用了程序集A的应用程序MyApp成为可能.

假如, 原先的版本中,程序集A(A.DLL)包含有一个类型MyClass,其有一个方法MyMethod(),MyApp程序引用了程序集A中的MyClass。
要实现Type Forwarding的目的,需要完成以下几步工作:
[*]将MyClass的代码从程序集A移动到程序集B;[*]编译程序集B,生成B.DLL;[*]在程序集A中添加对程序集B的引用;[*]在程序集A的AssemblyInfo.cs文件中,添加以下属性:[*]编译程序集A,生成A.DLL;[*]用新版本的程序集A(A.DLL)替换应用程序MyApp目录下的旧程序集A。此时,你无须编译MyApp,运用MyApp程序,即能顺利运行;
如果没有第4步中,其它步骤相同的方式运行 MyApp程序,此程序将崩溃。
示例代码如附件:TypeForwardingTest.rar。
该文件共有三个文件夹:分别为TypeForwardingTest,TypeForwardingTest_V1和TypeForwardingTest_V2,其说明如下:

[*]TypeForwardingTest文件夹          该文件夹中有应用程序MyApp和程序集A的源代码。

[*]TypeForwardingTest_V1文件夹          该文件夹中为:程序集A的AssemblyInfo.cs文件中,没有
语句。 [*]TypeForwardingTest_V2文件夹         该文件夹中为:程序集A的AssemblyInfo.cs文件中,有
语句。 验证步骤: [*]打开 TypeForwardingTest文件夹下的TypeForwardingTest.sln文件,并编译整个Solution;[*]运行MyApp.exe文件,可输入如下信息:          The return value is:Hello, world.
          Press Enter key to exit.
    3.    打开TypeForwardingTest_V1文件夹下的TypeForwardingTest_V1文件,并编译整个Solution;
    4,   将TypeForwardingTest_V1\A\bin\Debug目录下的A.dll和B.dll拷贝并覆盖TypeForwardingTest对应目录下的文件;
    5,重复第2步操作,发现MyApp.exe崩溃了;
    6, 打开TypeForwardingTest_V2文件夹下的TypeForwardingTest_V1文件,并编译整个Solution;
    7,   将TypeForwardingTest_V2\A\bin\Debug目录下的A.dll和B.dll拷贝并覆盖TypeForwardingTest对应目录下的文件;
    8,重复第2步操作,发现MyApp.exe能够正常运转,并显示出2中的信息;

参考资料:http://msdn2.microsoft.com/en-us/library/ms404275.aspx
页: [1]
查看完整版本: Type Forwarding-New Feature in .Net Framework 2.0