2010-12-09 107 views
0

我們有一個簡單的任務,在編譯之前,讓我們所有的AssemblyInfo.cs的文件編輯,然後更新更新的AssemblyVersion導致測試失敗

[裝配:的AssemblyVersion(「1.0.0.0」) ]

[裝配:的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, 版本= 1.0.0.4344文化=中性, 公鑰= XXXXXXXXXXXXXXXX' 在 System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, IRuntimeMethodInfo pCtor, 字節** ppBlob,BYTE * pEndBlob,的Int32 * pcNamedArgs)在 System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule 模塊,IRuntimeMethodInfo構造函數, IntPtr的&團塊,IntPtr的blobEnd,的Int32 & namedArgs)在 System.Reflection.CustomAt貢。GetCustomAttributes(RuntimeModule decoratedModule,的Int32 decoratedMetadataToken,的Int32 pcaCount,RuntimeType attributeFilterType,布爾 mustBeInheritable,IList的 derivedAttributes,布爾 isDecoratedTargetSecurityTransparent) 在 System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeMethodInfo 方法,RuntimeType caType,布爾 繼承)在 System.Reflection.RuntimeMethodInfo.GetCustomAttributes(布爾 繼承)在 Microsoft.VisualStudio.TestTools.Common.ReflectHelper.GetAttributes(MemberInfo info,Boolean bInherit)

===預綁定狀態信息=== LOG:用戶=域\ tfsbuildAccount LOG:DisplayName的= Namespace.BusinessLayer.BusinessEntity, 版本= 1.0.0.4344文化=中性, 公鑰= XXXXXXXXXXXXXXXX (完全指定的)LOG:應用平臺= 文件:/// d:/構建/ 4/10/TestResults/tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug /輸出LOG: 初始PrivatePath = NULL調用 組件: Namespace.BusinessLayer.BusinessComponent.Edi.Tests, 版本= 1.0.0.4344,Culture = neutral, PublicKeyToken = xx XXXXXXXXXXXXXX。 === LOG:此綁定在默認加載上下文中啓動。日誌:正在使用的應用程序 配置文件: d:\構建\ 4 \ 10 \ TestResults \ tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug \缺貨\ Namespace.BusinessLayer.BusinessComponent.Edi.Tests.DLL.config LOG:使用主機配置文件: LOG:使用機器配置文件 從 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config。 LOG:後政策參考: Namespace.BusinessLayer.BusinessEntity, 版本= 1.0.0.4344,文化=中立, 公鑰= XXXXXXXXXXXXXXXX日誌: 嘗試新的URL 文件下載:/// d:/構建/ 4/10/TestResults/tfsbuildAccount-TFSBUILD 2010-12-07 09_56_54_x86_Debug/Out/Namespace.BusinessLayer.BusinessEntity.DLL。 警告:比較程序集名稱 導致不匹配:修訂版 號碼錯誤:無法完成程序集(hr = 0x80131040)的設置 。探測 終止。

現在,我可能混淆了發佈這個的程序集,但它對所有測試都是相同的模式。請注意,公鑰都是一樣的,我可以看到所有的版本號都是一樣的。

我們做錯了什麼?

回答

0

嘗試更改引用安裝不是版本特定的。程序集的屬性選項卡中的「Secific Version = False」。

+0

這些是項目引用 - 該選項被禁用。 – 2010-12-09 16:06:57

相關問題