【问题标题】:Using Codebase to load assembly使用 Codebase 加载程序集
【发布时间】:2011-12-18 17:11:09
【问题描述】:

基于this question,我尝试使用<codebase> 定位外部程序集。现在,当我运行程序时,我收到一条错误消息,指出私有程序集位于应用程序库之外。我该如何解决这个问题?我看到的一个建议是签署大会。我这样做了,但是我的程序找不到程序集。当我取消签名时,我收到outside the appbase 错误。如何使用<codebase> 加载位于其他地方的程序集而不安装到 GAC? (探测也不起作用,似乎它仍然必须存在于应用程序文件夹中) 我的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>

        <assemblyIdentity name="NGameHost"

                          culture="neutral" />
        <codeBase version="1.0.0.0" 
                  href="C:/Program Files/NetworkGame3/api/NGameHost.exe"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

</configuration>

【问题讨论】:

    标签: c# console-application .net-assembly codebase assembly-signing


    【解决方案1】:

    如果程序集是私有程序集,则代码库设置必须是相对于应用程序目录的路径。

    (来自MSDN

    【讨论】:

    • 我已将路径设为相对路径(使用 ../../...)并且出现相同的错误消息。
    • 当您将程序集移动到应用程序的子目录而不是父目录时,会有所不同吗?
    • 问题是,dll 位于该特定目录中,因为还有很多其他依赖项,所以我无法将其移动到我的子目录中。但是,如果我在该目录中创建一个新项目并调用 DLL,它声称它无法加载另一个依赖项(原始 DLL 可以加载)。也许这就是导致问题的 DLL。
    • 感谢 sq33G,您的评论让我走上了正确的道路。事实证明,问题出在依赖 DLL 之一上,而不是我调用的那个。我不得不将我的框架配置文件切换到 2.0(这是依赖项使用的),它现在可以工作了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多