我们有一个简单的任务,在编译之前,使所有AssemblyInfo.cs文件都可编辑,然后更新
[assembly:AssemblyVersion(“1.0.0.0”)]
到
[assembly:AssemblyVersion(“1.0.0。<SourceGetVersion>
”)]
我们所有的程序集都使用相同的密钥签名。
这种事情可能是相当标准的,它可以正常工作,除非它导致测试失败。
失败看起来像这样:
测试方法 Namespace.Tests.MessageTest.TestMethod 抛出异常: System.IO.FileLoadException:不能 加载文件或程序集 “Namespace.BusinessLayer.BusinessComponent.Documents, 版本= 1.0.0.4344,文化=中立, PublicKeyToken = xxxxxxxxxxxxxxxx'或 其中一个依赖项。位于 程序集的清单定义 与程序集引用不匹配。 (HRESULT异常:0x80131040)
所以,我打开了建议的日志记录,并得到了这个:
W,3964,90,2010 / 12 / 07,09:57:43.059, TFSBUILD \ QTAgent32.exe,获取 类型的自定义属性 System.Reflection.RuntimeMethodInfo 抛出异常(将忽略并使用 反思方式): System.IO.FileLoadException:不能 加载文件或程序集 “Namespace.BusinessLayer.BusinessEntity, 版本= 1.0.0.4344,文化=中立, PublicKeyToken = xxxxxxxxxxxxxxxx'或 其中一个依赖项。位于 程序集的清单定义 与程序集引用不匹配。 (HRESULT异常:0x80131040) 文件名: “Namespace.BusinessLayer.BusinessEntity, 版本= 1.0.0.4344,文化=中立, PublicKeyToken = xxxxxxxxxxxxxxxx'在 System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule,IRuntimeMethodInfo pCtor, 字节** ppBlob,字节* pEndBlob,Int32 * pcNamedArgs) System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule 模块,IRuntimeMethodInfo ctor, IntPtr的&安培; blob,IntPtr blobEnd,Int32&amp; namedArgs) System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule,Int32 decoratedMetadataToken,Int32 pcaCount,RuntimeType attributeFilterType,Boolean mustBeInheritable,IList derivedAttributes,Boolean isDecoratedTargetSecurityTransparent) 在 System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeMethodInfo 方法,RuntimeType caType,布尔值 继承) System.Reflection.RuntimeMethodInfo.GetCustomAttributes(布尔 继承) Microsoft.VisualStudio.TestTools.Common.ReflectHelper.GetAttributes(的MemberInfo info,Boolean bInherit)
===预绑定状态信息===日志:用户=域\ tfsbuildAccount 日志:DisplayName = Namespace.BusinessLayer.BusinessEntity, 版本= 1.0.0.4344,文化=中立, 公钥= XXXXXXXXXXXXXXXX (完全指定)LOG:Appbase = 文件:/// d:/构建/ 4/10 / TestResults / tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug / Out日志: 初始PrivatePath = NULL调用 部件 : Namespace.BusinessLayer.BusinessComponent.Edi.Tests, 版本= 1.0.0.4344,文化=中立, 公钥= XXXXXXXXXXXXXXXX。 ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序 配置文件: d:\构建\ 4 \ 10个\ TestResults \ tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug \输出\ Namespace.BusinessLayer.BusinessComponent.Edi.Tests.DLL.config 日志:使用主机配置文件: 日志:使用机器配置文件 从 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。 日志:政策后参考: Namespace.BusinessLayer.BusinessEntity, 版本= 1.0.0.4344,文化=中立, PublicKeyToken = xxxxxxxxxxxxxxxx日志: 试图下载新的URL 文件:/// d:/构建/ 4/10 / TestResults / tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug /输出/ Namespace.BusinessLayer.BusinessEntity.DLL。 警告:比较程序集名称 导致不匹配:修订版 数字错误:无法完成设置 汇编(hr = 0x80131040)。探测 终止。
现在,我可能已经混淆了发布此内容的程序集,但它与所有测试的模式相同。请注意,公钥都是一样的,我可以看到所有的修订号都是一样的。
我们做错了什么?
答案 0 :(得分:0)
尝试将引用程序集更改为非特定于版本。程序集的属性选项卡中的“特定版本=假”。