为啥将 dll 从 GAC 复制到 project\bin 文件夹
Posted
技术标签:
【中文标题】为啥将 dll 从 GAC 复制到 project\\bin 文件夹【英文标题】:Why a dll is copied from GAC to project\bin folder为什么将 dll 从 GAC 复制到 project\bin 文件夹 【发布时间】:2013-10-25 16:45:30 【问题描述】:有以下情况:
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。
我从未遇到过类似的问题,也不知道如何诊断。有什么建议吗?
编辑:我忘了提及。此 dll 未在项目的参考中引用。 (我在 Visual Studio 项目资源管理器中看不到它: 我的解决方案 -> 我的项目 -> 参考
编辑(@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确实被标记为复制本地现在的问题是在哪里?
【问题讨论】:
尝试在引用中将复制到本地属性设置为 false。 对不起,我忘了提到这个dll在项目中没有被引用。感谢您提及,但事实并非如此。 "dll 在我的项目中没有被引用" - 必须从某处 引用它,否则它不会神奇地出现。 那不是一个包含已编译形式网页的dll吗?下载jetbrains.com/decompiler打开.dll反编译看看代码。 看起来它是由 devenv 复制的传递运行时引用。当您尝试使用 MSBuild 从命令行构建解决方案时,是否会发生同样的情况? 【参考方案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
【讨论】:
实际上这是解决阻碍开发问题的方法。你是对的,并得到了答案。虽然我仍然不知道为什么每次构建时都会复制它,但我不想过多介绍细节。我对当前的解决方案感到满意。 dll 被复制,但我可以运行我的应用程序。【参考方案2】:尝试清理您的解决方案文件。
转到构建标签 点击清洁解决方案 然后点击构建解决方案我很久以前就有过这样的经历。但就我而言,我的一个项目无法找到另一个项目的 .dll。我搜索了答案,我只是想出了使用这种方法。 也试试看这里。 Rebuild Visual Studio Library Project Reference
【讨论】:
清理、重建等没有帮助 删除 .pdb 文件并重建解决方案文件怎么样?以上是关于为啥将 dll 从 GAC 复制到 project\bin 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
使用 sharepoint 2007 在 Gac 或 bin 中的 Web 部件 dll