C# 在预生成任务中更新AssemblyVersion会导致测试失败
我们有一个简单的任务,在编译之前,使所有AssemblyInfo.cs文件都可编辑,然后更新 [汇编:汇编版本(“1.0.0.0”)] 到 [汇编:汇编版本(“1.0.0.C# 在预生成任务中更新AssemblyVersion会导致测试失败,c#,msbuild,C#,Msbuild,我们有一个简单的任务,在编译之前,使所有AssemblyInfo.cs文件都可编辑,然后更新 [汇编:汇编版本(“1.0.0.0”)] 到 [汇编:汇编版本(“1.0.0.”)] 我们所有的程序集都使用相同的密钥签名 这类事情可能是相当标准的,它工作得很好,只是它会导致测试失败 失败情况如下所示: 试验方法 Namespace.Tests.MessageTest.TestMethod 引发异常: System.IO.FileLoadException:无法 加载文件或程序集 'Namespace
”)]
我们所有的程序集都使用相同的密钥签名
这类事情可能是相当标准的,它工作得很好,只是它会导致测试失败
失败情况如下所示:
试验方法
Namespace.Tests.MessageTest.TestMethod
引发异常:
System.IO.FileLoadException:无法
加载文件或程序集
'Namespace.BusinessLayer.BusinessComponent.Documents,
版本=1.0.0.4344,区域性=中性,
PublicKeyToken=XXXXXXXXXXXXXX'或
它的一个依赖项。位于
程序集的清单定义不正确
与程序集引用不匹配。
(来自HRESULT的异常:0x8013100)
因此,我打开了建议的日志记录,并得到以下结果:
W、 3964902010/12/07,09:57:43.059,
TFSBUILD\QTAgent32.exe,正在获取
类型的自定义属性
System.Reflection.RuntimeMethodInfo
抛出异常(将忽略并使用
反思方式:
System.IO.FileLoadException:无法
加载文件或程序集
'Namespace.BusinessLayer.BusinessEntity,
版本=1.0.0.4344,区域性=中性,
PublicKeyToken=XXXXXXXXXXXXXX'或
它的一个依赖项。位于
程序集的清单定义不正确
与程序集引用不匹配。
(来自HRESULT的异常:0x8013100)
文件名:
'Namespace.BusinessLayer.BusinessEntity,
版本=1.0.0.4344,区域性=中性,
PublicKeyToken=XXXXXXXXXXXXXX'位于
System.Reflection.CustomAttribute.\u CreateCaObject(RuntimeModule
pModule,IRuntimeMethodInfo pTor,
字节**ppBlob,字节*pEndBlob,Int32*
pcNamedArgs)在
System.Reflection.CustomAttribute.CreateCaoObject(运行时模块
模块,IRuntimeMethodInfo-ctor,
IntPtr&blob,IntPtr blobEnd,Int32&
姓名(Dargs)在
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule
装饰模块,Int32
装饰元数据令牌,Int32
pcaCount,RuntimeType
attributeFilterType,布尔型
必须是不可靠的,IList
派生属性,布尔
IsDecoratedTargetSecurity(安全透明)
在
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeMethodInfo
方法,运行时类型caType,布尔值
继承)在
System.Reflection.RuntimeMethodInfo.GetCustomAttributes(布尔值
继承)在
Microsoft.VisualStudio.TestTools.Common.ReflectHelper.GetAttributes(MemberInfo
信息,布尔值bInherit)
===预绑定状态信息===日志:用户=域\tfsbuildAccount
日志:DisplayName=
Namespace.BusinessLayer.BusinessEntity,
版本=1.0.0.4344,区域性=中性,
PublicKeyToken=XXXXXXXXXXXXXX
(完全指定)日志:Appbase=
file:///D:/Builds/4/10/TestResults/tfsbuildAccount-TFSBUILD
2010-12-07 09_56_54_x86_调试/退出日志:
初始PrivatePath=NULL调用
大会:
Namespace.BusinessLayer.BusinessComponent.Edi.Tests,
版本=1.0.0.4344,区域性=中性,
PublicKeyToken=XXXXXXXXXXXXXX。
==日志:此绑定在默认加载上下文中启动。日志:使用应用程序
配置文件:
D:\Builds\4\10\TestResults\tfsbuildAccount TFSBUILD
2010-12-07
09_56_54_x86_Debug\Out\Namespace.BusinessLayer.BusinessComponent.Edi.Tests.DLL.config
日志:使用主机配置文件:
日志:使用计算机配置文件
从…起
C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config。
日志:发布策略引用:
Namespace.BusinessLayer.BusinessEntity,
版本=1.0.0.4344,区域性=中性,
PublicKeyToken=XXXXXXXXXXXXXX日志:
正在尝试下载新的URL
file:///D:/Builds/4/10/TestResults/tfsbuildAccount-TFSBUILD
2010-12-07
09_56_54_x86_Debug/Out/Namespace.BusinessLayer.BusinessEntity.DLL。
警告:正在比较程序集名称
导致不匹配:修订
编号错误:未能完成安装
总成(hr=0x8013100)的总成。探查
终止
现在,我可能混淆了发布此消息的程序集,但所有测试的模式都是相同的。请注意,公钥都是相同的,我可以看到所有的修订号都是相同的
我们做错了什么?尝试将引用更改为不特定于版本。程序集属性选项卡中的“Secific Version=False”。这些是项目引用-该选项已禁用。