トップ回答者
参照アセンブリ警告エラー

質問
回答
-
のぼのぼ さんからの引用 よろしくお願いします。
Zip関連の機能を実装するため、vjslib.dllをダウンロードして
新しい参照に追加しましたが、
「警告 1
参照アセンブリ 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vjslib.dll' は、
アプリケーションとは異なるプロセッサをターゲットにしています。」の警告エラーが出ます。dll自体は参照してるみたいで、Zipファイルは正常に作成されます。
このDllを参照すると必ず出る警告エラーなのでしょうか?
vjslib.dllが何かと調べてみたら、J#のライブラリみたいですね。
おそらくは、vjslib.dllが64ビットOSに対応していないために警告が出ていると思われます。
(64ビットOS上で動かしたらエラーになる? それともWoW上で動く?)
対策方法ですが、32ビットOSだけを対象にするのであれば、[プロジェクトのプロパティ]を開き、[コンパイル]から[詳細コンパイルオプション]ボタンをクリックし、[ターゲットCPU]をAnyCPUからx86に変更すれば警告は出なくなると思われます。
(ただし、当然ですが64ビットOS上では動かなくなります)
もしも.NET Framework 3.0が利用可能であれば、System.IO.Packaging.ZipPackageを使う方法があります。
http://msdn.microsoft.com/ja-jp/library/system.io.packaging.zippackage.aspx
-
CatTail さんからの引用 (64ビットOS上で動かしたらエラーになる? それともWoW上で動く?)
AnyCPU でコンパイルしているなら、64bit プロセスとして実行され、そして dll がロードできずに実行時例外でしょう。
CatTail さんからの引用 対策方法ですが、32ビットOSだけを対象にするのであれば、[プロジェクトのプロパティ]を開き、[コンパイル]から[詳細コンパイルオプション]ボタンをクリックし、[ターゲットCPU]をAnyCPUからx86に変更すれば警告は出なくなると思われます。
(ただし、当然ですが64ビットOS上では動かなくなります)
いいえ、WOW64 上で 32bit プロセスとして動きます。
// でも J# が 64bit Windows にインストールできたかどうかは知らない。
CatTail さんからの引用 もしも.NET Framework 3.0が利用可能であれば、System.IO.Packaging.ZipPackageを使う方法があります。
http://msdn.microsoft.com/ja-jp/library/system.io.packaging.zippackage.aspx
ZipPackage は一般的な Zip ファイル操作ライブラリではありません。Open Packaging Conventions 仕様に基づくパッケージングのためのライブラリです。ファイルを作成したときは普通の Zip ファイルとしては余計なものが追加されますし、普通の Zip ファイルの中を見ることもできません。
.NET で代表的な Zip ライブラリと言えば #ziplib でしょうか。
-
Visual J# 2.0 Residtributable Package-Second Edition なら、64-bit環境をネイティブにサポートしています。
http://msdn.microsoft.com/en-us/vjsharp/bb188598.aspx
すべての返信
-
のぼのぼ さんからの引用 よろしくお願いします。
Zip関連の機能を実装するため、vjslib.dllをダウンロードして
新しい参照に追加しましたが、
「警告 1
参照アセンブリ 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vjslib.dll' は、
アプリケーションとは異なるプロセッサをターゲットにしています。」の警告エラーが出ます。dll自体は参照してるみたいで、Zipファイルは正常に作成されます。
このDllを参照すると必ず出る警告エラーなのでしょうか?
vjslib.dllが何かと調べてみたら、J#のライブラリみたいですね。
おそらくは、vjslib.dllが64ビットOSに対応していないために警告が出ていると思われます。
(64ビットOS上で動かしたらエラーになる? それともWoW上で動く?)
対策方法ですが、32ビットOSだけを対象にするのであれば、[プロジェクトのプロパティ]を開き、[コンパイル]から[詳細コンパイルオプション]ボタンをクリックし、[ターゲットCPU]をAnyCPUからx86に変更すれば警告は出なくなると思われます。
(ただし、当然ですが64ビットOS上では動かなくなります)
もしも.NET Framework 3.0が利用可能であれば、System.IO.Packaging.ZipPackageを使う方法があります。
http://msdn.microsoft.com/ja-jp/library/system.io.packaging.zippackage.aspx
-
CatTail さんからの引用 (64ビットOS上で動かしたらエラーになる? それともWoW上で動く?)
AnyCPU でコンパイルしているなら、64bit プロセスとして実行され、そして dll がロードできずに実行時例外でしょう。
CatTail さんからの引用 対策方法ですが、32ビットOSだけを対象にするのであれば、[プロジェクトのプロパティ]を開き、[コンパイル]から[詳細コンパイルオプション]ボタンをクリックし、[ターゲットCPU]をAnyCPUからx86に変更すれば警告は出なくなると思われます。
(ただし、当然ですが64ビットOS上では動かなくなります)
いいえ、WOW64 上で 32bit プロセスとして動きます。
// でも J# が 64bit Windows にインストールできたかどうかは知らない。
CatTail さんからの引用 もしも.NET Framework 3.0が利用可能であれば、System.IO.Packaging.ZipPackageを使う方法があります。
http://msdn.microsoft.com/ja-jp/library/system.io.packaging.zippackage.aspx
ZipPackage は一般的な Zip ファイル操作ライブラリではありません。Open Packaging Conventions 仕様に基づくパッケージングのためのライブラリです。ファイルを作成したときは普通の Zip ファイルとしては余計なものが追加されますし、普通の Zip ファイルの中を見ることもできません。
.NET で代表的な Zip ライブラリと言えば #ziplib でしょうか。
-
Visual J# 2.0 Residtributable Package-Second Edition なら、64-bit環境をネイティブにサポートしています。
http://msdn.microsoft.com/en-us/vjsharp/bb188598.aspx