我有可执行以下输出结构,我的解决方案:需要澄清:.NET运行时如何从父文件夹解析程序集引用?
%ProgramFiles% | +-[MyAppName] | +-[Client] | | | +-(EXE & several DLL assemblies) | +-[Common] | | | +-[Schema Assemblies] | | | | | +-(several DLL assemblies) | | | +-(several DLL assemblies) | +-[Server] | +-(EXE & several DLL assemblies)
在溶液中引用不同的DLL组件,其中一些是从溶液中其他项目的产出,和其他每一个项目是纯第三方组件。例如,[Client] EXE可能引用位于不同目录分支中的[Common]中的程序集。
所有引用都将“Copy Local”设置为false,以反映最终安装的应用程序中文件的布局。
现在,如果我查看Visual Studio IDE中的引用属性,我会看到每个引用的“路径”都是绝对的,并且它对应于程序集的实际输出位置。这是可以理解和正确的。正如所料,解决方案编译并运行得很好。
我不明白为什么即使关闭IDE,重命名[MyAppName]目录并手动运行[Client] EXE,为什么一切似乎都能正常工作?如果参考路径与链接时不相同,运行时如何找到程序集?
要清楚 - 这实际上正是我所追求的:无论[MyAppName]目录位于何处,甚至是什么名称,都能正常运行的半分散应用程序集。我只想知道,如何以及为什么在没有任何特定路径解决方案的情况下工作。
我已阅读this similar question的答案,但我仍然不明白。
非常感谢!
如何在app.config中定义DLL源代码? – 2011-01-05 05:42:11