2013年8月1日 星期四

C# 程式出現找不到參考的元件 'Microsoft.CSharp'


拿到一個別人的 C# 程式要修改,我是用 VS 2012,打開時就直接轉換為 VS2012 格式。

但編譯時出現以下錯誤

「警告    1    無法在目前設定為目標的 Framework 中解析主要參考 "Microsoft.CSharp",而且它是 Framework 組件。".NETFramework,Version=v3.5"。若要解決此問題,請移除參考 "Microsoft.CSharp",或將應用程式的目標重定為包含 "Microsoft.CSharp" 的 Framework 版本。」
「警告    2    找不到參考的元件 'Microsoft.CSharp'。」


看起來應該是之前是用 .NET Framework 3.5 開發,
但我電腦是裝 .NET Framework 4.5,

修正方式為:
「方案總管」 -> 底下的「方案」 -> 底下的「專案」 -> 按右鍵 -> 選「屬性」
-> 左邊選單,選「應用程式」 -> 裡面的「目標 Famework」選「.NET Framework 4.5」


備註:
一開始我是參考網路文章,直接修改「.csproj」的方式。
打開專案資料夾的「專案名稱.csproj」檔案

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
修改為
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

修改後,結果發生下面兩個錯誤
開啟時出現錯誤
「vshost32.exe 已經停止工作」

編譯時出現錯誤
「類型 'System.BadImageFormatException' 的未處理例外狀況發生於 未知的模組。
其他資訊: 無法載入檔案或組件 'XXXX.exe' 或其相依性的其中之一。 此組件是由比目前載入的執行階段還新的執行階段所建置,因此無法載入。」

在找錯誤原因的時候,發現專案的屬性就可以修改 TargetFrameworkVersion。
於是從屬性修改,就沒有這些錯誤發生了,比較一下 csproj 檔,
發現 VS 2012 其實不只修改 TargetFrameworkVersion,還會修改其他設定。
所以以後還是盡量避免直接修改「.csproj」檔。

沒有留言:

張貼留言