c#引用另一个程序集时将copy local设置为false

时间:2014-09-17 10:33:21

标签: c# visual-studio-2012 reference assemblies

我一直在构建ac #project。我的主项目引用了一些其他程序集。我需要做的是将所有这些程序集放在单独的文件夹中。假设我有3个referance程序集,它们的路径是c:\ lib1 \ assembly1。 dll,E:\ somefolder \ assembly2.dll,C:\ docs \ debug \ assembly3.dll。对于我的情况,我需要将所有这3个程序集重新引用到我的项目中,但我无法将它们复制到另一个文件夹,因为它们的路径是不变的并且它们需要保留在那里。但是当我重新考虑它们并尝试运行我的代码时它会给出错误说装配无法加载。有没有解决这个问题的方法。我使用的是vs2012 64bit windows 8.1。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

  1. 您可以在配置文件中使用<probing>部分 定义加载程序集时要搜索的目录 但是,这些目录必须是子目录 应用文件夹。 (另见question)。

  2. 您也可以将您的图书馆放在GAC中。

  3. 您可以订阅当程序集解析失败时发生的AppDomain.AssemblyResolve事件。在事件处理程序中,您应该在自定义目录中查找程序集。如果你找到一个,你应该从处理程序返回它,它将被运行时起诉。

答案 1 :(得分:-1)

这是因为您可能正在尝试加载32位的程序集并且您的应用程序在64位模式下运行。

确保没有32位程序集,具体取决于/引用64位程序集。

编辑1:

如果程序集在本地复制时加载完全,那么在这种情况下,它们必须对指定位置的访问权限有一些问题。