64ビットマシンで作業する開発者と32ビットマシンで作業する開発者がいるが、半分のチームでx86にする必要があるアンマネージドアセンブリを参照する必要がある場合もう半分はx64ですか? 64ビットリグの誰かが最新のものになるたびに手動で参照を更新する以外に解決策がありますか?混在した.NET開発環境のアンマネージドx64アセンブリ
答えて
あなたはビルドの一環としてこれをやりたいですか?
参照元のDLLをソースツリーの永続的な位置からローカルプロジェクトにコピーするためのビルド前のステップを作成します。 $(ConfigurationName)または$(PlatformName)マクロを使用して、実際にコピーされるアンマネージDLLのバージョンを選択します。 DLLは、構成名またはプラットフォーム名と同じ名前の別々のフォルダに保持されます。
x64マシンの開発者が64ビット版をうまく実行するのはむしろ奇妙です。 Visual Studioではx64モードでの編集+続行はサポートされていませんが、それはかなり損失です。回避策は簡単ですが、Platform Targetをx86に設定してください。あなたのアンマネージドDLLの問題も自動的に解決します。
それは奇妙で、私は3つの黒い羊とそれについて議論するつもりですが、それには解決策があればさらに良いでしょう。私はそれがかなりフリンジケースだと思うが、私は見続けるだろう。 – PeteK
コードを少し編集する別の解決策があります。答えはMilan Gardianからthis questionに記載されています。
基本的には、アセンブリの両方の(32ビットと64ビット)バージョンにアクセスできる場合は、実行時にロードするアセンブリを決定する独自のアセンブリ参照ハンドラを作成する必要があります。私はちょうどこのソリューションを自分自身で実装しましたが、それは魅力的に機能します。
私の状況は次のとおりです。
Windows 7 64ビット版の「Any CPU」を対象とした.NETプログラムを開発しています。私は32ビットのアセンブリ参照を追加し、Copy Localをfalseに設定しました。ビルド後のイベントを使用して32ビットと64ビットのアセンブリを出力フォルダにコピーし、32ビットアセンブリに参照と異なる名前を付けるようにします。これは、.NETのデフォルトのアセンブリリゾルバで参照を解決できないため、カスタムアセンブリリゾルバを強制的に起動してその処理を実行したいからです。実行時に正しいアセンブリがロードされ、コンパイル時にエラーは発生しません。私は実際にこれが現在32ビットOSで動作していることを実際に確認する時間がなかったことに注意してください。ただし、動作しない理由は何もありません。
- 1. オンラインレール開発環境
- 2. ハイブリッド開発環境
- 3. 開発環境(ワードプレス)
- 4. phonegap開発環境
- 5. テスト環境とプロダクション環境がVPSで混在CakePHP
- 6. 開発環境でのキャッシュ?
- 7. Facebookの開発環境
- 8. Docker開発環境のリッチエディタ
- 9. 開発環境のSSO
- 10. ドッカーベースの開発環境
- 11. GAE開発 - 開発環境セットアップ(HotSwap)
- 12. laravel開発環境sqliteデータベースが存在しません
- 13. 軽量WebLogic開発環境
- 14. asp.net制作/開発環境
- 15. asp.netウェブページ開発環境
- 16. Ionic Setup開発環境
- 17. Nodemon開発環境用
- 18. Excelアドイン開発環境
- 19. Solaris(SPARC)開発環境
- 20. SpringBoot:Configuration Production対開発環境
- 21. 開発環境用Kubernetes
- 22. VS2017 ASP.NETコア環境開発
- 23. Access 2010開発環境
- 24. Dot Net Nukeモジュール用のモジュール開発ソリューション/環境/ベストプラクティス
- 25. Windows Live ID C#.netの開発環境を持つOAuth
- 26. 開発環境でのプレイグラウンドの開始
- 27. .netアプリケーションがwin2003 x64 sp2環境で実行するとエラー0xc000142が発生しました
- 28. レール開発環境循環依存エラー
- 29. CKANプラグインを開発するための開発者環境
- 30. イオン3の開発環境と生産環境を基にしたデータ表示
実際、これは設計時です。ビルドプロセスのためのソリューションが用意されていますが、開発者の中にはDebug | x64。 – PeteK