.net Visual Studio参考项目/Dll';s
如果我在订单中有一个项目列表.net Visual Studio参考项目/Dll';s,.net,winforms,visual-studio,architecture,reference,.net,Winforms,Visual Studio,Architecture,Reference,如果我在订单中有一个项目列表 1. Commons 2. DAL 3. BAL 4. WebUI 在上面的项目中,引用应该以这种方式进行 DAL refer's to Commons. BAL refer's to DAL. WebUI refer's to BAL. 那么,当我从WebUI访问BAL方法时,它为什么会给出一个错误,该方法返回一个在Commons中定义的对象。在项目依赖中,WebUI依赖于所有三个项目。但是为了简单起见,我不想在WebUI项目中包含Common、BAL、DAL
1. Commons
2. DAL
3. BAL
4. WebUI
在上面的项目中,引用应该以这种方式进行
DAL refer's to Commons.
BAL refer's to DAL.
WebUI refer's to BAL.
那么,当我从WebUI访问BAL方法时,它为什么会给出一个错误,该方法返回一个在Commons中定义的对象。在项目依赖中,WebUI依赖于所有三个项目。但是为了简单起见,我不想在WebUI项目中包含Common、BAL、DAL的引用。但是我想要的是,它应该自动包含所有依赖项目(如果有的话)的引用
有谁能帮我解释一下如何摆脱Visual Studio的这种意外行为。如果
WebUI
使用了Commons
中定义的任何类型,那么Commons
项目必须作为WebUI
项目的引用包含在内。即使该类型用作在WebUI
项目正在使用的不同程序集中声明的方法(即BAL
)的返回类型
确实没有办法解决这个问题。如果
WebUI
使用Commons
中定义的任何类型,则必须将Commons
项目作为WebUI
项目的参考。即使该类型用作在WebUI
项目正在使用的不同程序集中声明的方法(即BAL
)的返回类型
确实没有办法解决这个问题。在项目中引用DLL不会将DLL的代码包含(复制)到项目中。如果
BAL
将Commons
中定义的对象返回到WebUI
,则WebUI
还需要对Commons
的引用,以便它知道返回的类型
如果需要解决此问题的方法,可以尝试使用合并程序集,然后引用合并的程序集。我建议在软件发布期间这样做。否则,这似乎会使开发和调试更加繁琐。在项目中引用DLL不会将DLL的代码包含(复制)到项目中。如果
BAL
将Commons
中定义的对象返回到WebUI
,则WebUI
还需要对Commons
的引用,以便它知道返回的类型
如果需要解决此问题的方法,可以尝试使用合并程序集,然后引用合并的程序集。我建议在软件发布期间这样做。否则,似乎会使开发和调试更加繁琐。您不认为Visual Studio应该自动处理此类项目引用层次结构吗?不,不太可能。。因为您可能会遇到这样一个场景:WebUI只使用BAL中的一些方法,这些方法不会公开或处理Commons中定义的任何类型。在这种情况下,您不需要引用Commons。那么Visual Studio如何才能为您做出这样的决定呢?这很简单,因为在任何情况下,任何引用项目都需要复制dll。那么,为什么不自动引用呢?你不认为Visual Studio应该自动处理这种项目引用层次结构吗?不,不是真的。。因为您可能会遇到这样一个场景:WebUI只使用BAL中的一些方法,这些方法不会公开或处理Commons中定义的任何类型。在这种情况下,您不需要引用Commons。那么Visual Studio如何才能为您做出这样的决定呢?这很简单,因为在任何情况下,任何引用项目都需要复制dll。那么为什么不自动引用呢?那真是一团糟,如果我为体系结构中的每个模块创建单独的dll,我怎么能在解决方案中的每个项目中添加100个项目引用呢。@ManishRawat-除非您正在构建Office,否则在解决方案中添加100个程序集可能太过分了。。只是一个想法。不过,当我看到WebUI的bin/文件夹时,我可以看到所有的dll都复制到了那里。这意味着VisualStudio会自动复制dll,但不会自动引用它们。如果没有被引用,VS似乎不太可能复制dll。可能这些文件是以前版本的遗留文件。尝试回收垃圾箱文件夹并重新构建。看看结果如何。它确实是在将dll复制到bin文件夹中。我想说的是,WebUI仅引用BAL,但我仍然在WebUI bin目录中找到了DAL/Commons dll,这是因为BAL依赖于DAL,DAL依赖于Commons。所以,它是自动复制的。那真是一团糟,如果我为体系结构中的每个模块创建单独的dll,我怎么能在解决方案中的每个项目中添加100个项目引用呢。@ManishRawat-除非您正在构建Office,否则在解决方案中添加100个程序集可能太过分了。。只是一个想法。不过,当我看到WebUI的bin/文件夹时,我可以看到所有的dll都复制到了那里。这意味着VisualStudio会自动复制dll,但不会自动引用它们。如果没有被引用,VS似乎不太可能复制dll。可能这些文件是以前版本的遗留文件。尝试回收垃圾箱文件夹并重新构建。看看结果如何。它确实是在将dll复制到bin文件夹中。我想说的是,WebUI仅引用BAL,但我仍然在WebUI bin目录中找到了DAL/Commons dll,这是因为BAL依赖于DAL,DAL依赖于Commons。所以,它是自动复制的。