【问题标题】:Change or add a path to external .dll in Visual Studio 2010 using C#使用 C# 在 Visual Studio 2010 中更改或添加外部 .dll 的路径
【发布时间】:2013-09-18 10:36:29
【问题描述】:

我编写了一个 C# 应用程序,它使用在运行时加载的外部 .dll。如果我将此 .dll 复制到我的应用程序的 bin 目录中,该应用程序工作正常。由于其他应用程序也使用外部 .dll,我希望它只在系统上使用一次,这样每个应用程序都使用相同的 .dll。

所以我在PATH-Environment变量中添加了对应的路径。

当我从我的 bin 目录中删除 .dll 并启动应用程序时,我得到一个

System.TypeLoadException: Failed to resolve the Type

建议的方式 Visual Studio: how to set path to dll? 不起作用

【问题讨论】:

  • 更改PATH后是否重启了VS?
  • 是的,我实际上重启了整个系统,但这并没有任何影响

标签: c# .net visual-studio-2010 dll


【解决方案1】:

将程序集位置添加到 PATH 变量不会使其对您的应用程序可用,因为这不是 .NET 程序集查找的执行方式。

如果您希望多个应用程序使用同一个程序集,您需要将它添加到Global Assembly Cache (GAC)。您应该注意,为了做到这一点,您需要签署您的程序集。有关如何将程序集添加到 GAC 的更多信息,您可以have a look here

【讨论】:

  • 我忘了说:外部 .dll 是在运行时加载的。这是否意味着,如果我想在没有安装 VS 的系统上安装应用程序,我实际上需要外部 .dll 的安装程序?
  • 如果在运行时加载是指调用Assembly.LoadFrom,那么你不需要将它添加到GAC,你所要做的就是知道它在磁盘上的位置。如果不是这种情况,并且您希望它位于不是 app 目录的共享目录中,则您的安装程序需要将其添加到 GAC。
【解决方案2】:

如果它只是你自己的机器,如果你不想使用 CopyLocal 或 GAC,有几种方法。

  • 在 bin 文件夹中创建指向 dll 的符号链接

MKLINK bin\mydll.dll C:\path\to\dlls\mydll.dll

  • 使用 DEVPATH 环境变量指定程序集所在的位置

将以下内容添加到配置文件(或 machine.config,如果您需要全局设置)

<configuration>
    <runtime>
        <developmentMode developerInstallation="true"/>
    </runtime>
</configuration>

然后创建环境变量DEVPATH

SET DEVPATH=C:\path\to\dlls;C:\Path\to\somewhereelse

只需确保 DEVPATH 至少包含一个有效路径。否则所有 .Net 程序都会在启动时崩溃并出现奇怪的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多