バージョン間の既知の問題があるのに、なぜ並んで窓の側(winSxS)は、自動アップグレードのためのポリシーをインストールしますか?
-
29-08-2019 - |
質問
私たちはMSVC 2K5、SP1を使用してコンパイルしたアプリ(バージョン762 msvcrt80)
を持っています 誰かが同じマシン.Net3.0SP1にインストールし、それに伴いmsvcrt80バージョン1433がインストールされ、ポリシーが自動的にアップグレードするまで、はすべてが右に、十分である。
今、私たちはすべての場所と不幸な顧客の上にランダムなクラッシュを持っています。
私たちは特定のバージョンの使用を強制するために私たちのマニフェストファイルを調整することができます理解し、私は自動生成されたディテールをコピーし、手でそれを修正するのは本当に醜い方法をだけ見つけました。これは、修正するためのアプリケーションの数が多いと、特に不快である
私たちは、代わりにwinSxSディレクトリに愚かな「アップグレード」ポリシーを取り除くことはできますか? マニフェストを生成するだけで、まだ自動的に特定のバージョン用にコンパイルする/フラグのオプションがありますか?
解決
CRTのあなたの特定のバージョンのために生成されたマニフェストを検索します。次に、あなたのアプリケーションのメインファイルにプラグマを追加します:
#pragma comment(linker,"/manifestdependency:\"type='win32' " \
"name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \
"version='" _CRT_ASSEMBLY_VERSION "' " \
"processorArchitecture='x86' " \
"publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
所属していません StackOverflow