【问题标题】:Visual Studio: DLL locations for releaseVisual Studio:用于发布的 DLL 位置
【发布时间】:2011-04-03 10:20:13
【问题描述】:

我正在处理一个引用“通用库 (DLL)”的项目。在 DevEnv 中它工作正常,但是如果我构建并尝试组织我的文件,它就不起作用。基本上,如果我有这样的设置:

  • C:\Program Files\MyApp\MyApp.exe
  • C:\Program Files\MyApp\Common\WPF Commons.dll
  • C:\Program Files\MyApp\Modules\SomeModule.dll

MyApp.exe 不起作用。它试图仅在当前目录中查找 DLL 文件。那么如何在 Visual Studio 中进行设置,以便在构建应用程序时知道在其他文件夹中查找 DLL?

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

【问题讨论】:

    标签: visual-studio dll release


    【解决方案1】:

    您需要做的是在应用程序配置文件中添加一个私有探测路径。这告诉 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 意味着在事后进行编辑,以允许管理员清理绑定和部署问题。将它用于探测路径是标准做法(Visual Studio 实际上就是这样做的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多