为什么将dll从GAC复制到project \ bin文件夹

时间:2013-10-17 09:13:45

标签: c# .net visual-studio dll

遇到以下情况:

  • Windows 7 64位
  • Visual Studio 2010
  • 包含asp.net 2.0项目的解决方案
  • 在文件夹中: C:\ Program Files(x86)\ Reference Assemblies \ CompanyName \ 我有文件:
    • Aaa.dll
    • Aaa.pdb
    • Aaa.xml(xmldoc) 我的解决方案中的任何项目都没有引用dll(实际上我的解决方案中只有一个项目

问题是,每次我进行构建时,dll,pdb和xml都会被复制到bin文件夹中,我得到:

Could not load file or assembly 'Aaa.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.

如果我在运行程序之前没有删除dll。

我从未遇到过类似的问题,我不知道如何诊断它。有什么建议吗?

编辑:我忘记了。项目的参考中未引用此 。 (我在Visual Studio项目资源管理器中看不到它: MySolution - > MyProject - >参考

修改(@chappo感谢您提供新的见解) 运行MsBuild我看到:

_CopyFilesMarkedCopyLocal:
  Copying file from "C:\MyCompany\MyProjects\Project1\App_Code\AjaxControlToolkit.dll" to "bin\AjaxControlToolkit.dll".
  Copying file from "C:\Program Files (x86)\Reference Assemblies\MyCompany\Aaa.dll" to "bin\Aaa.dll".
  Copying file from "C:\Program Files (x86)\Reference Assemblies\MyCompany\Aaa.pdb" to "bin\Aaa.pdb".
  Copying file from "C:\Program Files (x86)\Reference Assemblies\MyCompany\Aaa.xml" to "bin\Aaa.xml".

dll确实标记为本地副本,问题现在在哪里?

2 个答案:

答案 0 :(得分:1)

我有过类似的问题一次。因为你有64位系统,检查'Aaa.dll'是否是32位DLL。如果是,则必须将IIS中的应用程序池设置更改为启用32位应用程序。

您可以在此处找到详细说明:https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx

答案 1 :(得分:0)

尝试清理解决方案文件。

  • 转到构建标签
  • 点击清洁解决方案
  • 然后点击构建解决方案

很久以前我经历过这样的经历。但就我而言,我的一个项目无法找到我的另一个项目的.dll。我搜索了答案,我才开始使用这种方法。

试着看看这里。 Rebuild Visual Studio Library Project Reference