gpt4 book ai didi

c# - 将自定义路径设置为引用的 DLL?

转载 作者:IT王子 更新时间:2023-10-29 03:50:23 27 4
gpt4 key购买 nike

我有一个 C# 项目(称为 MainProj ),它引用了其他几个 DLL 项目。通过将这些项目添加到 MainProj 的引用中,它将构建它们并将生成的 DLL 复制到 MainProj 的工作目录。

我想做的是让这些引用的 DLL 位于 MainProj 的工作目录的子目录中,即 MainProj/bin/DLLs,而不是工作目录本身。

我不是一个非常有经验的 C# 程序员,但来自 C++ 世界,我假设一种方法是删除项目引用并通过路径和文件名显式加载所需的 DLL(即在 C++ 中, LoadLibrary ) .但是,如果有办法的话,我更愿意做的是设置某种“引用二进制路径”,这样当我构建时它们都会自动复制到这个子目录(然后从那里引用而无需我需要显式加载每个)。这样的事情可能吗?

如果不是,那么在 C# 中完成我所追求的目标的首选方法是什么(即 Assembly.Load/Assembly.LoadFile/Assembly.LoadFrom ?也许是 AppDomainSystem.Environment ?)

最佳答案

来自 this page (未经我测试):

在程序初始化的某处(在从引用的程序集中访问任何类之前)执行此操作:

AppDomain.CurrentDomain.AppendPrivatePath(@"bin\DLLs");

编辑: This article说 AppendPrivatePath 被认为已过时,但也提供了解决方法。

编辑 2:看起来最简单和最符合规范的方法是在 app.config 文件中(参见 here):

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\DLLs" />
</assemblyBinding>
</runtime>
</configuration>

关于c# - 将自定义路径设置为引用的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1892492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com