[英]DLL lib in a different folder of EXE (relative path)
我有一个 windows 应用程序项目,它构建在一个使用 DLL (RestSharp) 的 exe 中。 该项目在 Visual Studio 2008 中。我在参考文献中添加了 DLL,如果我点击 DLL,我会看到:
当我构建我的 exe 时,使用这些设置,DLL 库被复制到构建目录中。 在我的部署环境中,我想将我的 exe 放在一个文件夹中,并将 DLL 放在另一个文件夹中 示例:C:\Test\Exe (EXE FOLDER) Z0D61F8370\Test\Lib (D412F80B84D143FDLL)
那可能吗? 如何?
我在参考路径中设置了 C:\Test\Lib ,但这是一个绝对路径,我正在寻找一个相对路径。 参考文献中的 DLL 路径也是绝对的。 我究竟做错了什么? 我希望 exe 能够“找到” DLL,无论它被复制到哪里(C:\Test 或 D:\Test 或只是 D:)
谢谢
Better you register that DLL in GAC, one DLL from same path will be using, Please refer below to know https://www.c-sharpcorner.com/UploadFile/dacca2/register-your-assembly-in-gac-using- gacutil-exe/
在开始之前,深呼吸并确定你想要这个的确切原因,因为这通常会使事情复杂化而没有太多收获。
您可以通过使用装配探测来做到这一点。
首先,首先阅读这篇文章是一件好事: https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies
文章的某处是这样的:
元素的 privatePath 属性,即用户定义的根位置下的子目录列表。 可以使用应用程序域的 AppDomainSetup.PrivateBinPath 属性在应用程序配置文件和托管代码中指定此位置。
我们可以在探测标签的文档中看到它是如何完成的; https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/probing-element
将 app.config 文件添加到您的项目并像这样编辑它:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\REEE;someTestPath"/>
</assemblyBinding>
</runtime>
</configuration>
现在,当 dll 作为参考添加时,它会自动复制到您的 output 文件夹中。 然而,我们希望 dll 位于子文件夹中。 我知道有两种方法可以做到这一点;
还要检查这个相关的答案:
https://stackoverflow.com/a/58124935/4122889
我强烈建议您不要这样做,除非您有充分的理由这样做。 那时我很好奇这个原因是什么:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.