今天在bdn中看到一篇文章
http://bdn.borland.com/article/0,1410,32765,00.html
重要的部分摘抄如下
执行摘要
•名称空间不会影响Win32的Delphi。
•基于单位名称产生名称空间,如下:
•如果点了一个单位名称,则使用到最后一个点的单位名称。
•如果未点缀,则使用默认名称空间。
•如果没有默认名称空间,则使用单位名称。
•从Delphi 8转换的代码可能需要进行一些修改。
•始终使用软件包而不是库来创建可共享的组件。
•Delphi将始终通过其完整单位名称参考类型。
•其他语言需要使用其名称空间引用类型。
•ASP.NET声明,配置文件和.NET反射总是通过其名称空间引用类型。
•如果多个单元在同一名称空间中散发出具有相同名称的公共类型,则该组件可能无法使用
Borland始终建议不要使用图书馆项目来创建组件。在Delphi 2005中,编译器更加严格,不再允许您编译引用Delphi“库”的应用程序。
始终使用软件包项目创建.NET组件。
但是,与任何内容一样,该规则有例外,即使您在Delphi中进行编码,也需要在几种情况下使用命名空间。
一个示例是,当您在ASPX,ASCX或ASMX文件中使用标签时。如果在文件application.pages.webform1.pas中创建一个名为twebform的网页,则页面标签为:
<%@page Lakenagy =“ C#” CodeBehind =“ WebForm1.pas” shartasits =“ application.pages.twebform1”%> |
另一个是将类型信息以字符串形式传递给.NET时,尤其是在使用基于反射的API和配置文件时:
var c:typeconverter; c:= assembly.createinstance('sample.controls.tconverter'); |
这种轻微的差异通常会绊倒人们,您需要注意的是,尤其是从Delphi 8移植代码或从其他语言转换代码时。
这就解释了我原来的疑问,在d2005中,新建一个.net dll,编译,在别的编译器中(c#)但是包中添加资源很不方便,真是不知道borland是怎么想的。