簡體   English   中英

無法將類型A DLL強制轉換為類型B DLL。 類型A起源於上下文。

[英]Type A DLL cannot be cast to type B DLL. Type A originates.. from in the context LoadFrom

我正在嘗試使用TestProject在Visual Studio中測試第三個pary API。 我出錯了。 我已經在測試項目以及業務邏輯項目中引用了第三API。 現在,我將測試數據從“測試”項目傳遞到“業務邏輯”項目,但出現以下錯誤。

無法將[A] TIMSS.API.User.UserDefinedInfo.UserDefinedCustomerTechnicalDisciplinees強制轉換為[B] TIMSS.API.User.UserDefinedInfo.UserDefinedCustomerTechnicalDisciplinees。 類型A源自上下文'LoadFrom'中位置'C:\\ Svad \\ Trunk \\ Source \\ EBusiness \\ EBusiness.Test \\ bin'的'TIMSS.API.User,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null' \\ bin \\ TIMSS.API.User.dll'。 類型B源自位置``C:\\ Svadlakonda \\ Srikanth \\ Trunk \\ Source \\ EBusiness \\ EBusiness.Test''的``默認''上下文中的'TIMSS.API.User,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null' \\ bin \\ TIMSS.API.User.dll'。

這是什么問題? 我試圖使Test Project引用的DLL Copy Localfalse ,反之亦然。

假設兩個程序集中的類型確實相同(或可轉換)(項目引用的類型和使用LoadFrom加載的類型),則將“ LoadFrom”程序集加載到應用程序域中應該可以解決此問題。 這可能不是線程安全的,但值得嘗試。

// This can cause "A cannot be cast to B" errors even using two exact copies of the same DLL.
var uncastableAssembly = Assembly.LoadFrom(filename);

// This shoud solve the casting issue but there still could be other issues.
var castableAssembly = AppDomain.CurrentDomain.Load(Assembly.LoadFrom(filename).GetName());

目標框架差異:

我的錯誤是由加載目標框架版本(例如4.5.2)比其引用的另一個版本(例如4.6.1)低的程序集引起的

我遇到了此錯誤,唯一修復此錯誤的方法是安裝Microsoft .NET Framework 4.5.2(脫機安裝程序) https://www.microsoft.com/zh-cn/download/details.aspx?id=42642

我還早些時候安裝了SQL Server 2014 Client工具,並且通過安裝更新​​的msxml 6.0版本也可能產生積極影響。

我的錯誤消息是:

無法將[A] xx.xxxx.ClassUserDS強制轉換為[B] xx.xxxx.ClassUserDS。 類型A源自'yyyyyy,版本= 3.0.5617.31787,文化=中性,PublicKeyToken = 657d68e01eb7c911'在上下文'默認'中的位置'C:\\ Users \\ xxxxx \\ Appdata \\ Local \\ assembly \\ dl3 \\ QQ3VBMNC.EO1 \\ VYVECOB7 .H5J \\ 2b6c89d2 \\ 51158eea_9892d001 \\ yyyyyy.DLL'。 類型B從'yyyyyy,Version = 3.0.5617.31787'出發,位於位置'C:\\ Users \\ xxxxx \\ Appdata \\ Local \\ Microsoft \\ InfoPath \\ FormCache4 \\ 30083E69.D18 \\ cd264661b1055c58 $ b04f2786908cb791 \\ yyyyyyy.dll

我嘗試查找沒有幫助的regedit HKCU \\ Software \\ Microsoft \\ Fusion \\。

我嘗試重置辦公室緩存,但沒有幫助。

C:\Program Files (x86)\Microsoft Office\Office15\INFOPATH.EXE /cache clearall

or 64bit office 2013:
C:\Program Files\Microsoft Office\Office15\INFOPATH.EXE /cache clearall

or 64bit office 2010
C:\Program Files\Microsoft Office\Office14\INFOPATH.EXE /cache clearall

我嘗試重置融合(GAC)緩存,但我不知道該怎么做(除了從開始菜單運行“ .NET Framework 1.1配置”以了解情況)。

當我重命名aspx頁面以隱藏它時,發生了此錯誤。

就我而言,我已將名為tutorials.aspx的文件重命名為tutorials-hidden.aspx。 發布成功,但是當我加載URL時出現錯誤500。已通過添加tutorials.aspx文件然后從項目中將其刪除來解決。 可能在csproj文件中保留了一些定義。

暫無
暫無

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

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