我使用Visual Studio制作C#程序。我有一个第三方的Dll,我正在加载。它可以工作,但我希望它位于编译目录的子目录中。 (Release \ lib \而不是Release)。我可以使用exe.config文件来完成此操作,但我不希望用户能够更改程序查找Dll的位置。那么,如何在不使用exe.config的情况下在子目录中引用Dll?Visual Studio - 在编译文件夹外加载参考文件
回答
我认为您需要AppDomainSetup.PrivateBinPath属性设置为您的域。 在此属性中指定文件夹路径(如果多于一个用“;”分隔)您的引用程序集所在的位置。通过这种方式,您可以对程序集进行签名,以查找指定的目录以获取所需的引用。
请注意,此属性仅适用于子目录o bin路径的目录,但看起来确实如此。
编辑
例子:
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "path1;path2;...";
好运。
好吧,这似乎是我需要的,但我在哪里放?对不起,我对这种东西不太好。在Main()函数顶部的Program.cs中,我将AppDomainSetup设置为appdomainsetup = new AppDomainSetup(); \t \t \t appdomainsetup.PrivateBinPath =“\\ lib \\”;但我如何使用该变量? – Aidan 2012-02-20 19:27:13
@Aidan:结帐我编辑的评论 – Tigran 2012-02-20 19:39:01
这是行不通的:/。我尝试打印出改变后改变的值,没有任何结果。所以,这意味着它不会更新该变量。我认为你需要做的是创建一个新的域并设置它。我想弄清楚现在怎么做...... – Aidan 2012-02-20 19:46:50
在开始加载dll之前,指定PrivateBinPath很重要。
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "path";
Application.Run(new Form1());
}
}
如果在应用程序文件夹一个dll需要在我们指定的文件夹PrivateBinPath另一个DLL,它不会工作。所有dll必须在同一个文件夹中...
- 1. Visual Studio编译文件
- 2. 编译* .lib文件visual studio
- 3. 文件/参考在Visual Studio 2010
- 4. Visual Studio 2008加载项无法加载外部文本文件
- 5. 编译C文件在Matlab与Visual Studio
- 6. 的Visual Studio发布文件夹除外
- 7. Hadoop:外部jar文件夹参考
- 8. Visual Studio Express 2012不在编译文件夹中构建exe文件
- 9. 类文件不能在App_Code文件夹之外编译
- 10. 从加载项添加文件和文件夹的项目在Visual Studio 2010
- 11. 预编译头文件和Visual Studio
- 12. 如何让Visual Studio“编译”.aspx文件?
- 13. Visual Studio文件夹文件路径
- 14. 在Visual Studio 2010中编译`C`文件时,它是否编译为C++文件?
- 15. 在Visual Studio中加载转储文件
- 16. Visual Studio 2013在打开解决方案时不加载参考文件
- 17. Visual Studio - 发布文件夹
- 18. Visual Studio 2015 -Release文件夹
- 19. Visual Studio文件夹结构
- 20. Visual Studio ipch文件夹
- 21. Visual Studio 2010:添加现有文件夹
- 22. Maven的参考文件夹
- 23. MVC Visual Studio在模型文件夹中添加.dbml文件
- 24. 创建文件 - 编译并将参考放入系统文件夹
- 25. 在mingw主文件夹之外构建和编译文件
- 26. 自动添加要在Visual Studio中编译的文件
- 27. 在Visual Studio中只增加一个文件的重新编译
- 28. 如何在visual studio 2012中编译newley添加的源文件?
- 29. Visual Studio在错误位置创建文件夹/文件夹
- 30. 参考外部DTD文件
将其复制到文件夹中。删除当前引用,然后转到参考 - >添加并导航到.dll位于的位置..这是一个问题..当你部署应用程序..你打算在目标计算机上创建一个文件夹,基于你将它放在本地..还是你要设置copy local = true ..?你有没有想过使用GAC,如果你正在移植到目标机器? – MethodMan 2012-02-20 19:08:47
我已经尝试过......它将其复制到输出目录,或者,如果我将其关闭,则会在运行时发出错误。在目标机器上,它将具有带有exe的bin文件夹,然后是带有dll的lib文件夹。还有一些其他的东西,但现在并不重要。另外,我看过其他人发表的帖子,其中有人说你可以使用GAC,但这是一个非常糟糕的主意......所以如果没有这个可能,那会更好。 – Aidan 2012-02-20 19:15:32