簡體   English   中英

在預構建任務中更新AssemblyVersion會導致測試失敗

[英]Updating AssemblyVersion in pre-build task causes test failure

我們有一個簡單的任務,在編譯之前,使我們所有的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,Version = 1.0.0.4344,Culture = neutral,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,Version = 1.0.0.4344,Culture = neutral,PublicKeyToken = xxxxxxxxxxxxxxxx'或其依賴項之一。 找到的程序集的清單定義與程序集引用不匹配。 (來自HRESULT的異常:0x80131040)文件名:'Namespace.BusinessLayer.BusinessEntity,Version = 1.0.0.4344,Culture = neutral,PublicKeyToken = xxxxxxxxxxxxxxxx'位於System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule,IRuntimeMethodInfo pCtor,Byte ** ppBlob ,位於System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule模塊,IRuntimeMethodInfo ctor,IntPtr&blob,IntPtr blobEnd,Int32&namedArgs)的System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule裝飾模數,Int32, ,在Microsoft.VisualStudio.TestTools上,在System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeMethodInfo方法,RuntimeType caType,布爾值繼承)處為System.Reflection.RuntimeMethodInfo.GetCustomAttributes(布爾值繼承)處的RuntimeType attributeFilterType,布爾值mustBeInheritable,IList派生屬性,布爾值isDecoratedTargetSecurityTransparent)。 Common.ReflectHelper.GetAttributes(MemberInf o info,布爾值bInherit)

===綁定前狀態信息===日志:用戶= domain \\ tfsbuildAccount日志:DisplayName = Namespace.BusinessLayer.BusinessEntity,Version = 1.0.0.4344,Culture = neutral,PublicKeyToken = xxxxxxxxxxxxxxxx(完全指定)LOG:Appbase =文件:/// D:/ Builds / 4/10 / TestResults / tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug / Out日志:初始PrivatePath = NULL調用程序集:Namespace.BusinessLayer.BusinessComponent.Edi.Tests,Version = 1.0。 0.4344,文化=中性,PublicKeyToken = xxxxxxxxxxxxxxxx。 === LOG:此綁定在默認加載上下文中啟動。 日志:使用應用程序配置文件: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 = xxxxxxxxxxxxxxxx日志:嘗試下載新的URL文件:/// D:/ Builds / 4/10 / TestResults / tfsbuildAccount -TFSBUILD 2010-12-07 09_56_54_x86_Debug / Out / Namespace.BusinessLayer.BusinessEntity.DLL。 WRN:比較程序集名稱會導致不匹配: 修訂號 ERR:無法完成程序集的設置(hr = 0x80131040)。 探測終止。

現在,我可能將發布此代碼的程序集弄混了,但是所有測試的模式都是相同的。 請注意,公鑰都是相同的,我可以看到所有修訂版本號都相同。

我們做錯了什么?

嘗試將參考組件更改為非特定於版本。 程序集的屬性選項卡中的“ Secific Version = False”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM