2011-08-10 11 views
1

Windows 7環境でテストおよび開発を開始する必要があるアプリケーションがあります。 VS2008のWinXPで問題なくコンパイルできます。今日はVS2008を使用してWindows 7のマシン上でそれをコンパイルするために行ったときしかし、私は次のエラーを取得する:Windows 7でのコンパイラの問題:GDI +で一般的なエラーが発生しました

Error 12 The "GenerateResource" task failed unexpectedly. 
System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+. 
    at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams) 
    at System.Drawing.Image.Save(MemoryStream stream) 
    at System.Drawing.Image.System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) 
    at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) 
    at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) 
    at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) 
    at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) 
    at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) 
    at System.Resources.ResourceWriter.WriteValue(ResourceTypeCode typeCode, Object value, BinaryWriter writer, IFormatter objFormatter) 
    at System.Resources.ResourceWriter.Generate() 
    at System.Resources.ResourceWriter.Dispose(Boolean disposing) 
    at System.Resources.ResourceWriter.Close() 
    at Microsoft.Build.Tasks.ProcessResourceFiles.WriteResources(IResourceWriter writer) 
    at Microsoft.Build.Tasks.ProcessResourceFiles.WriteResources(String filename) 
    at Microsoft.Build.Tasks.ProcessResourceFiles.ProcessFile(String inFile, String outFile) 
    at Microsoft.Build.Tasks.ProcessResourceFiles.Run(TaskLoggingHelper log, ITaskItem[] assemblyFilesList, List`1 inputs, List`1 outputs, Boolean sourcePath, String language, String namespacename, String resourcesNamespace, String filename, String classname, Boolean publicClass) 
    at Microsoft.Build.Tasks.ProcessResourceFiles.Run(TaskLoggingHelper log, ITaskItem[] assemblyFilesList, List`1 inputs, List`1 outputs, Boolean sourcePath, String language, String namespacename, String resourcesNamespace, String filename, String classname, Boolean publicClass) 
    at Microsoft.Build.Tasks.GenerateResource.Execute() 
    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 
    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult) 

私は私の人生のために、この1を下に実行することはできません。私はmsdnフォーラムを訪問し、それが多くの人々にとって問題であることを見出しましたが、MSや他の誰かによって一貫した解決策が提供されていません。

誰もこれを以前見たことがありますか?アドバイスが必要です!

おかげ

+0

もう少し文脈が役立つかもしれません。このアプリケーションは何をしますか? p/invokeなどで特別なinteropを実行していますか? – Mateo

+0

医療用ソフトウェアです。私はこれが画像の取り扱いと関係していると信じています。 Imageを使用して、患者の写真やロゴを保存します。保存しますが、すべてのImage.Saveコードをコメントアウトしてもエラーは発生します。 – Encryption

+0

リソースを保存するときにエラーが発生したようです。ファイルを特定の場所に保存する権限がない場合、このエラーが発生しました。 VSを管理者として実行するとどうなりますか? –

答えて

2

トラブルシューティングの時間が経ってから、MSBUILDを使用してVS 2010コマンドラインプロンプトを使用して「私のソリューションファイルパスはここにあります」というプロジェクトを開いてビルドしました。これはビルドイベントの可視性の高いシーケンスを提供し、フォーム16をコンパイルした直後にプロジェクトが失敗していることがわかりました。コンパイルされたフォームは、ソリューションエクスプローラのオブジェクトの順番に並んでいるようです。そこで、次のフォームをチェックして、それに画像ボックスが含まれていることを確認しました。私もそのフォームの後にフォームをチェックし、エラーなしでデザイナを開くことができないことがわかりました(オブジェクト参照はオブジェクトのインスタンスに設定されていません)。だから明らかに、問題は2倍になりました。 Iを解決するには

は、破損しているように見えたとして、私は(それがどのように使用されていませんでした)問題があると同定された最初のフォームからピクチャボックスオブジェクトを削除する必要がありました。 null参照例外を持つ2番目のフォームがユーザーコントロールを使用していることがわかりました。ユーザーコントロールのコンストラクタのコードは、InitializeComponent()を呼び出す前にオブジェクトをコンテナに渡そうとしていました。問題のあるコードが呼び出されたときにコンテナがInitializeComponentでイベントが作成されていないため、null参照が作成されました。私の解決策は

0

Windows 7のGDIの更新があり、私は間違っていない場合、私は、と思います。多分それが問題を解決するだろう。あなたのソリューションは、commsnd行でMsbuildを使ってビルドしていますか?

+0

Erik、あなたが何を求めているのか分かりませんが、VS2008(F6を使用)で直接ソリューションを構築します。コマンドラインを使用しないでください。 – Encryption

+0

Vs2010コマンドプロンプトを開き、«msbuild mysolitionfilename.sln»と書いても構いませんか? –

+0

私はVS2008を使用しています.... – Encryption

0

アプリでTIFF画像を使用していますか?

私はVista x86上で魅力的にコンパイルされていましたが、以前はTIFF画像にWin7 x64でコンパイルされないレポートの一部として問題がありました。エラーメッセージには、GDI +も関係しています。私は別の形式(PNG)で画像を保存し、問題はなくなりました。

当時(2011年3月頃)、私はまずWindowsが最新であることを確認しましたが、問題は解決しませんでした。だから、Erikの言葉のような更新があるかもしれないが、それは当時のWindows Updateではなかったかもしれない(それはもっと新しいかもしれない)。

+0

プロジェクトにTIFFイメージがありません。私はpngとicoの画像を持っています。私はすでにすべてのイメージファイルを削除してコンパイルしようとしています。 – Encryption

3

コマンドラインmsbuildを使用してコンパイルし、問題のある場所を特定しました。

未使用の画像が1つあるクラスのresxファイルです。私はそれを取り除き、すべてが再び良かった。今すぐ上手くいくことができます。

0

は、リソースマネージャからリソースを削除します(各上で右クリックし、削除)は、Windows 7でコンパイル上の段落で問題を解決した後

し、それらを再度追加。私にとってそれは問題を解決する。

関連する問題