2016-04-03 85 views
1

我有一箇舊的.net應用程序,一個用於遊戲的mod加載程序。我想修改它以支持類似的遊戲,但是當我用新的包切換包含的dll並嘗試加載一個mod腳本時出現彙編錯誤。該程序集由比當前加載的運行時更新的運行時構建,無法加載

有沒有辦法使應用程序兼容較新的DLL?

我聯繫了應用程序的原作者,但他們不想更新舊項目。我也沒有來源。

兩個DLL文件爲V 1.0.0.0,但一個專爲網2.0和較新的一個.NET 4.0

的excutable是專爲網2.0,所以CFF探險家說,雖然反射鏡說,這是3.5。

這有什麼意義嗎?

+0

我使用ilmerge將目標平臺更改爲net v4並立即獲取; http://i.imgur.com/57d8345.jpg – slarlac249

回答

0

如果我理解正確,您試圖在.NET Framework應用程序中加載.NET Framework 4.0程序集。試圖實現這一點似乎離trivial很遠,並嘗試之前,我會嘗試以下內容:

如果舊解決方案沒有被混淆,並且您沒有違反某些版權聲明,我會嘗試使用反射器(或其免費的兄弟,Telerik decompiler)來反編譯舊的程序集,創建一個項目並根據.NET Framework 4.0進行編譯。

+0

忘了提到我的編程知識是相當有限的。我已經對它進行了反編譯,並試圖在vs2010中重新編譯它,但它總是在編譯時拋出一大串錯誤,因此不會構建任何內容,所以我不確定發生了什麼。這裏是應用程序錯誤的屏幕,如果這是任何使用http://i.imgur.com/etxsK4G.jpg – slarlac249

+0

您是否將項目的目標框架更改爲.NET框架4.0? – Alexei

+0

您可以嘗試使用調試程序集並附加到進程以查看TypeLoadException的內部異常嗎? – Alexei

0

這意味着您的項目將構建爲針對較低的框架版本(如1.0,2.0,3.5或4.0),並且您試圖引用使用較新的框架版本構建的程序集。你不能那樣做。

如果您需要引用後面框架版本中構建的代碼,那麼您必須將change your project定位到該框架版本或更高版本。如果你必須這樣做,那麼你可能會瞄準4.5,因爲它更近。

針對較新的框架版本進行更改可能非常簡單,但有時會產生其他需要解決的參考問題。希望不會,所以如果你能夠做到的話,你就可以跨越這一切。

+0

我想我不能做任何事情,因爲我沒有得到原始的源代碼,並且由於錯誤超出了我的頭,它將不會在vs中重建。 :( – slarlac249

相關問題