我正在做一个有3个项目(c#)的解决方案。
主要项目引用其他人。 我希望在我的主项目中有以下文件结构:
main.exe
Libraries - folder
+ 2.dll
+ 3.dll
但不幸的是VS将这些DLL文件放到了EXE位置。
有没有简单的解决方案呢?
答案 0 :(得分:2)
您可以将子DLL上的输出路径更改为指向库。
但是,这不是.Net在运行时针对DLL解析进行探测的标准路径,因此当您尝试部署此问题时,您可能会遇到问题,除非您手动从这些位置加载。
如果您将项目引用标记为Copy Local,那么我不相信您可以通过配置更改Visual Studio将文件复制到的目录。
但是,您可以设置一个构建后的命令,在每次构建后自动将文件移动到所需的子目录中。
<强>更新强>
我喜欢这个网站,因为它让我每天都能学到新东西。作为一个例子,我刚刚发现了probing element您可以添加到配置文件中,以便为标准探测路径添加其他路径。
此配置元素允许.Net在您的libraries
文件夹中搜索要加载的DLL,以便在它们到位后您不必再执行任何其他工作(您仍需要将它们移动到该目录使用postbuild命令)。
以下是支持配置的示例配置条目:
<configuration>
<runtime>
<assemblyBinding>
<probing privatePath="bin\libraries"/>
</assemblyBinding>
</runtime>
</configuration>
答案 1 :(得分:1)
我有同样的问题,但之前的例子没有用。只有在我指出计划之后,一切都运转良好:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Libraries"/>
</assemblyBinding>
</runtime>
</configuration>