我是.net的新手。今天我创建了一个样本。在该示例中,我使用N层架构将数据存储在数据库中。如果我想在其他项目中使用BL或DAL方法(我的意思是UI中的BL方法或BL中的DAL方法),我找到了两种方法。
第一个是 - 右键点击项目<<添加参考<<在项目选项卡中选择项目
第二个 - 右键点击项目<<添加参考<<在“浏览”选项卡中选择DLL
有人能告诉我两者之间是否有任何区别,因为两者的工作方式相同。这样的DLL比Project Reference更好。如果是,那么有什么好处?
提前致谢。
此致 莫希特库马尔。
答案 0 :(得分:4)
正确的方法是添加项目参考
其中一个最重要的区别是,当您更改引用的项目时,项目引用会自动更新
例如 - 如果您将DAL方法从GetEmployees()
更改为GetAllEmployees()
,那么您可以立即在BL类中使用GetAllEmployees()
,而无需先编译DAL。
答案 1 :(得分:1)
当引用是解决方案的一部分时,通常使用项目引用。通过这种方式,始终使用相关的最新代码。
当程序集是第三方组件或不是解决方案的一部分时,您将引用该程序集。这将更加静态,因为您将使用程序集所代表的版本的代码。因此,对程序集的任何更改都将要求您使用更新的dll物理覆盖引用的程序集。
HTH
答案 2 :(得分:0)
2之间的差异已经得到解答,但只是为了补充一点,我认为VS中2的唯一区别是,如果你添加项目引用它仍然添加一个普通的dll引用,除了引用是项目二进制文件的调试位置(即bin \ debug \ project.dll),实质上你可能只是以相同的方式添加引用并直接指向最新编译的dll。
答案 3 :(得分:0)
我发现这两种方法之间存在非常有趣的区别,但在有两个项目的情况下,一个项目在多个开发人员之间共享,另一个项目由每个开发人员共享。
让我们说共享VS项目称为projectS,私有项目称为projectP
现在,如果目标是集中开发,并且开发人员需要从projectP和projectS访问源定义,以便在VS中按“F12”或“Go To Definition”将带来完整的定义,那么我们必须使用Project Reference而不是DLL引用,否则按F12将带来编译后的“元数据”中的定义,不包括所有开发者注释和其他相关数据。
当在projectP中向projectS添加项目引用时,VS将解析对projectS中包含的文件的引用,并使用projectS中的源定义从projectP引用,而不是从与引用的项目关联的DLL的“元数据”中引用(ProjectS.dll)。仍然,projectS.dll将包含在References文件夹和开发时间中,执行时间就可以了。
添加DLL引用时,VS将解析存储在ProjectS.dll中的“元数据”中的引用,即使引用项目作为“现有项目”添加到projectP的解决方案中也是如此。这将允许执行时间正常,但是,开发人员将无法按下F12并转到projectS中的源定义,他/她将不得不从解决方案搜索区域手动执行此操作。