1

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

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

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

System.TypeLoadException: Failed to resolve the Type

Visual Studio中提出的方式 :如何设置dll的路径?不工作

4

2 回答 2

0

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

如果您希望多个应用程序使用相同的程序集,则需要将其添加到全局程序集缓存 (GAC)。您应该注意,为了做到这一点,您需要签署您的程序集。有关如何将程序集添加到 GAC 的更多信息,您可以查看此处

于 2013-09-18T10:45:06.017 回答
0

如果它只是你自己的机器,如果你不想使用 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 程序将在启动时崩溃并显示奇怪的错误消息。

于 2013-09-18T10:57:07.397 回答