我有一个包含类库(ProjectA)和两个Sharepoint项目(ProjectB& ProjectC)的Visual Studio 2010解决方案。依赖顺序是ProjectB引用ProejctA和ProjectC引用ProjectA和amp;项目B
在一台特定的开发机器上,我在尝试构建ProjectC时遇到以下错误:
编译失败。无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。
在查看融合日志时,我注意到以下错误:
*装配活页夹日志条目(14/06/2012 @ 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下运行
---详细的错误日志如下。
===预绑定状态信息=== 日志:用户= DOMAIN \用户名
LOG:DisplayName = ProjectB,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = aaaaaaaaaaaaaaa,processorArchitecture = MSIL (完全指定的)
日志:Appbase = file:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE /
日志:初始PrivatePath = NULL
日志:动态基础=空白
日志:缓存基数= NULL
日志:AppName = devenv.exe
调用程序集:(未知)。
日志:此绑定在默认加载上下文中启动。
日志:使用应用程序配置文件:C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.Config
日志:使用主机配置文件:
日志:使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config中的计算机配置文件。
日志:政策后参考:ProjectB,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = aaaaaaaaaaaaaaa,processorArchitecture = MSIL
日志:GAC查询失败。
日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PublicAssemblies / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PublicAssemblies / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / TemplateProviders / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / TemplateProviders / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / x86 / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / x86 / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / Editor / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / Editor / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Platform / Debugger / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Platform / Debugger / ProjectB / ProjectB.DLL。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PublicAssemblies / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PublicAssemblies / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / TemplateProviders / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / TemplateProviders / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / x86 / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / x86 / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / Editor / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / Editor / ProjectB / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Platform / Debugger / ProjectB.EXE。 日志:尝试下载新的URL文件:/// C:/ Program Files(x86)/ Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Platform / Debugger / ProjectB / ProjectB.EXE。 日志:所有探测URL都已尝试失败。
我试过了:
只有(2)将程序集放在GAC中才允许ProjectC构建。 为什么不能找到它应该的组件(在其他机器上也是如此)?
答案 0 :(得分:6)
PublicKeyToken = aaaaaaaaaaaaaaaa可能不同或者可能是程序集的版本号不同。我认为你应该按照描述使用 Fusion Log Viewer to Debug,并希望你能完全解决问题。
答案 1 :(得分:5)
所以事实证明无法找到集合的原因是因为我们Delayed Signing the Assemblies这意味着:
由于程序集没有有效的强名称签名,因此必须关闭该签名的验证。您可以使用-Vr选项和强名称工具来执行此操作。
我已经为所有必需的公钥执行了此操作,但仅限于x64 Visual Studio命令提示符。我还需要在x86版本的Visual Studio命令提示符中添加x86的验证跳过。
我只是设法找到了这个,因为尝试使用特定的基于命令的构建/部署脚本时,我在其中一个测试程序集中注意到以下异常:
无法加载文件或程序集'ProjectC.Tests,Version = 0.0.0.0, Culture = neutral,PublicKeyToken = e72f8d3506b83180'或其中一个 依赖。强名称验证失败。 (HRESULT的例外情况: 0x8013141A)