2011-05-13 49 views
5

我正在運行Visual Studio 2010. 我只是將我的項目的框架工作從4.0更改爲3.5。我刪除了參考Microsoft.Framework,它要求我刪除然後嘗試編譯。我現在得到的錯誤:c#更改框架錯誤

Error 1 Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Line 123, position 5. C:\Users\\Documents\Visual Studio 2010\Projects\\\Properties\Resources.resx 123 5

我知道,它指的是代碼在我resources.resx文件:

<resheader name="reader"> 
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    </resheader> 
    <resheader name="writer"> 
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    </resheader> 
    <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <data name="pix-300x300" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\pix-300x300.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 
    <data name="pix2" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\pix2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 
    <data name="pix4" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\pix4.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 
    <data name="pix3" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\pix3.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 

會怎樣我現在糾正這個,我的框架是3.5?

+0

您正在使用什麼版本的Visual Studio ? – 2011-05-13 15:41:27

+0

visual studio 2010 – toosweetnitemare 2011-05-13 17:30:35

+0

我有一些bug,但爲.net 2.0創建的項目初始化之前它的工作,但一些Visual Studio更新後它打破。是否存在System.Drawing 4.0? – devi 2012-01-26 13:43:46

回答

4

您可以嘗試通過右鍵單擊.resx文件並從上下文菜單中選擇「運行自定義工具」來重新生成該文件。

編輯:在執行此操作之前,更改訪問修飾符或添加新值以強制重新生成。

另一個編輯:見Downgrade an application from .net 4.0 to 3.5另一個可能性

+0

我這樣做的時候仍然會出現同樣的錯誤。我的代碼中似乎沒有任何改變。 – toosweetnitemare 2011-05-13 15:35:00

+0

更改訪問修飾符或添加新值以強制重新生成 – stuartd 2011-05-13 15:37:32

+0

我進入resrouces.resx文件並將訪問修飾符從內部更改爲公共並按下F5。然後我試圖再次運行自定義工具。沒有運氣 – toosweetnitemare 2011-05-13 15:41:40

3

我遇到了一個Visual Studio bug導致我類似的問題。我用這個解決方法來解決它:

A fix that SEEMS to work is to manually alter one character in the image stream EVERY TIME the usercontrol or form is edited in the designer

<data name="icons_20.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> 
    <value> 
    AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w 

Change to

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w 

That is 00LjAuMC4w back to 0yLjAuMC4w at the end of the line (00 back to 0y)

但我必須解決,每次我改變的東西在那種形式。

+0

林沒有看到我會做出這一改變。你可以請更具體嗎? – toosweetnitemare 2011-05-13 15:46:34

+0

在我的情況下,單擊錯誤使我直接進入該行。我剛把'j00'改成了'j0y'。 – 2011-05-13 15:47:57

+0

這是錯誤帶給我的位置「 .. \ malware2.jpg; System.Drawing.Bitmap,System.Drawing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a」 – toosweetnitemare 2011-05-13 15:51:43

1

不確定這一點,但由於其他答案沒有幫助,試試這個。文件中的Version=4.0.0.0告訴編譯器使用.net 4.0程序集。嘗試將它們更改爲Version=3.5.0.0Version=2.0.0.0並查看是否可以解決此問題。

+0

謝謝,我解決了這個問題,必須將所有版本= 4.0.0.0更改爲版本= 2.0.0。0,並在我的啓動時添加了useLegacyV2RuntimeActivationPolicy =「true – toosweetnitemare 2011-05-13 17:41:46

0

有這個問題很長一段時間,我失去了希望微軟修復這個bug有史以來。然後,我開始使用人工編寫的代碼的手柄圖片包含資源:

string resource = "Company.Namespace.Resources.picture.gif"; 
pictureBox1.Image = new Bitmap(Assembly.GetExecutingAssembly() 
.GetManifestResourceStream(resource)); 

點忘記設置屬性「建設行動」 picture.gif以「嵌入式資源」