在某个特定的开发机器上,当尝试构建ProjectC时,我会收到以下错误:
“编译失败。无法加载所请求的一个或多个类型。请检索LoaderExceptions属性以获取更多信息。”
查看融合日志时,我注意到以下错误:
* 汇编绑定日志条目(2012年6月14日@ 09:38:32)*
操作失败。
绑定结果:hr = 0x80070002。系统找不到指定的文件。
程序集管理器加载自:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
在可执行文件下运行:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
---详细错误日志如下。
=== 预先绑定状态信息 === LOG: 用户=DOMAIN\username
LOG: DisplayName = ProjectB,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = aaaaaaaaaaaaaaaa,processorArchitecture = MSIL (完全指定)
LOG: Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/
LOG: 初始PrivatePath = NULL
LOG: 动态基础 = NULL
LOG: 缓存基础 = NULL
LOG: AppName = devenv.exe
调用程序集:(未知)。
LOG: 此绑定在默认加载上下文中开始。
LOG: 使用应用程序配置文件:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.Config
LOG: 使用主机配置文件:
LOG: 使用来自C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config的计算机配置文件。
LOG: 后策略引用:ProjectB,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = aaaaaaaaaaaaaaaa,processorArchitecture = MSIL
LOG: GAC查找失败。
LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/ProjectB/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PublicAssemblies/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PublicAssemblies/ProjectB/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/ProjectB/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/ProjectB/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/DataCollectors/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/DataCollectors/ProjectB/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/DataCollectors/x86/ProjectB.DLL。 LOG: 尝试下载新的URL文件:///C:/Program Files (x86)/Microsoft Visual Studio 10
我已经尝试过以下方法:
1. 删除对 ProjectB 的引用并重新添加引用,包括: a) 作为项目引用 b) 直接作为指向 ProjectB 调试文件夹的手动引用
2. 手动将 ProjectB.dll 放入 GAC 中
3. 将 "Copy Local" 选项从 True 更改为 False (然后再改回 True)
只有第二种方法(将程序集放入 GAC)才能让 ProjectC 构建成功。
为什么它不能按照应有的方式找到程序集(而在其他计算机上可以)?