Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio:用于发布的DLL位置_Visual Studio_Dll_Release - Fatal编程技术网

Visual studio Visual Studio:用于发布的DLL位置

Visual studio Visual Studio:用于发布的DLL位置,visual-studio,dll,release,Visual Studio,Dll,Release,我有一个项目,我正在工作,它引用了一个“公共库(DLL)”。在DevEnv中,它可以正常工作,但是如果我构建并尝试组织我的文件,它就无法工作。基本上,如果我有这样的设置: C:\Program Files\MyApp\MyApp.exe C:\ProgramFiles\MyApp\Common\WPF Commons.dll C:\ProgramFiles\MyApp\Modules\SomeModule.dll 等 MyApp.exe不工作。它尝试仅在当前目录中查找DLL文件。那么,如何在

我有一个项目,我正在工作,它引用了一个“公共库(DLL)”。在DevEnv中,它可以正常工作,但是如果我构建并尝试组织我的文件,它就无法工作。基本上,如果我有这样的设置:

  • C:\Program Files\MyApp\MyApp.exe
  • C:\ProgramFiles\MyApp\Common\WPF Commons.dll
  • C:\ProgramFiles\MyApp\Modules\SomeModule.dll
MyApp.exe不工作。它尝试仅在当前目录中查找DLL文件。那么,如何在VisualStudio中设置它,以便在构建应用程序时知道如何在其他文件夹中查找DLL呢


哦,我意识到它在Dev中可以工作,因为所有DLL都放在同一个文件夹中。不过,我不想在发行版中这样做:-/

您需要做的是在应用程序配置文件中添加一个私有探测路径。这将告诉CLR在哪些目录中查找额外的程序集

示例app.config

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="Common;Modules"/>
      </assemblyBinding>
   </runtime>
</configuration>


除了复制MyApp.exe.config文件(可以在事后轻松打开和编辑)之外,还有其他解决方案吗?@myermian您可以覆盖程序集解析事件来执行自定义解析。但就我个人而言,我会选择app.config。app.config将在事后进行编辑,以允许管理员清理绑定和部署问题。使用它来探测路径是标准的做法(VisualStudio实际上就是这样做的)。