簡體   English   中英

將項目的.NET目標框架從4.0更改為3.5后,找不到文件(或程序集)

[英]File (or assembly) can't be found after changing project's .NET target-framework from 4.0 to 3.5

我想改變我的C#項目,它基於.NET 4.0到3.5。 所以我將項目的目標框架更改為3.5。

重新打開並嘗試編譯項目后,我收到錯誤:

無法找到文件或程序集“System.Drawing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其中一個依賴項。 系統找不到該文件。 odereineAbhängigkeitdavonwurde nicht gefunden。 Das System kann die angegebene Datei nicht finden。

這發生在Resource.resx文件中,如下所示:

<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <data name="traktor_connected" type="System.Resources.ResXFileRef, System.Windows.Forms">
        <value>..\Resources\traktor_connected.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
    </data>
    <data name="traktor_not_connected" type="System.Resources.ResXFileRef, System.Windows.Forms">
        <value>..\Resources\traktor-not-connected.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
    </data>

該引用指向.Net 4 - 您需要刪除所有.net 4引用,然后使用.net 3.5版本的組件讀取它們然后它將工作

保羅

更改目標框架設置並不完美。 例如,在C#項目中,您必須手動刪除對Microsoft.CSharp的引用。 是的,它不會自動更新.resx文件中的System.Drawing程序集引用。 這是一個相當大的缺陷,當你增加 .NET版本號(幾乎每個人通常都會這樣做)時可以正常工作,kaboom如果你試圖減少它。 .NET只是向前兼容。

在更改目標框架后,您必須刪除資源並將其添加回來。 非常痛苦,可以手動編輯.resx文件以最小化工作。 右鍵單擊.resx文件,打開方式,然后選擇文本編輯器。 將程序集名稱的版本從4.0.0.0更改為2.0.0.0。

但請注意,可能存在比較復雜的資源,如ImageList,其數據以二進制形式嵌入.resx中。 您將在.resx文件中看到一小塊base64編碼的字節。 它也嵌入了版本號,由BinaryFormatter完成。 VS不會為你做這件事的可能原因。 編寫一個將base64字符串解碼回byte []的小程序,找到正確的0x34並將其更改為0x32並將其轉換回base64只是一個黑客的喜悅,男人超過機器風格:)最好只重新添加到避免幾乎不可避免的oopses。

我在NET 4.5中安裝COM組件然后降級到NET 4.0時出現此錯誤。 刪除和添加引用沒有區別。

我覺得這很有幫助。

* 解決方案或解決方法更改默認的平台目標CPU,以允許應用程序在64位計算機上運行。 *

http://forums.arcgis.com/threads/19335-COM-Exception-was-unhandled-and-Class-not-registered

對我來說,.NET 4.0目標環境是32位,因此我在屬性窗口中將目標CPU降低到x86。 現在它運行了。

暫無
暫無

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

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