4

新しい MFC Feature Pack クラスを使用して、Microsoft Visual Studio 6.0/C++/MFC アプリケーションを Visual Studio 2008 SP1 に移行しました。.NET Framework から明示的に何も使用しません。ただし、.NET Framework 3.5 SP1 がまだインストールされていないシステムへのインストールには問題があります。Installshield は、ルーチンを呼び出す必要があるアプリケーション dll の読み込みに失敗します。VS2008 を使用して構築されたすべての (C++/MFC) アプリケーションに組み込まれている .NET Framework への暗黙の依存関係はありますか? そうでない場合、アプリケーションの何が .NET 依存関係を引き起こしているのかをどのように見つければよいでしょうか? 可能であれば、この依存関係を排除したいと考えています。

ありがとう、バリー

4

5 に答える 5

6

VC++ 9.0 ランタイムではなく、フレームワーク自体への依存関係は確かですか? また、ビルド設定に /clr スイッチが含まれていませんか?

VC++ 再頒布可能パッケージは次のとおりです

于 2009-09-24T17:22:29.943 に答える
4

依存関係はおそらくCRT90(VCランタイム)にあります。デフォルトのダイナミックリンクではなく、ランタイムに静的にリンクするカスタムアクションdllをコンパイルする必要があります。静的にリンクされたアプリケーション全体をビルドする必要はありません。InstallShieldがCRTをインストールできます。ISがCRTマージモジュールを実行する前に実行されるため、失敗するのはカスタムアクションdllだけです。

于 2009-09-24T17:31:37.387 に答える
3

Microsoft のこの記事を参照してください。つまり、.NET Framework 4.5 をインストールすると、以前は .NET に依存していなかったプロジェクトが .NET Framework に依存するようになります。

解決:

  1. プロジェクトを IDE からアンロードし、プロジェクト ファイル (.vcproj) を xml またはテキスト モードで開きます。

  2. xml ルート タグ (つまり "Project") の下に、次のドキュメント フラグメントを追加します。

    <PropertyGroup> <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences> </PropertyGroup>

  3. プロジェクトをリロードします。

  4. Microsoft の記事に記載されている前の手順に加えて、セットアップ プロジェクトの「前提条件」を確認し、.NET フレームワークのチェックを外します。

  5. 関連する「起動条件」を削除します。

  6. msi を再構築すると、依存関係が削除されます。

于 2013-03-26T06:18:25.543 に答える
2

Installshieldは、ルーチンを呼び出す必要のあるアプリケーションdllのロードに失敗します。

これは、インストーラーに問題があるようです。

このDLLはあなたのDLLですか?その場合は、/clrコンパイルスイッチ(.NET依存関係を追加する)を使用しているか、.NET依存関係を追加するライブラリ(ユーザーまたはサードパーティ)を参照しているものを含める必要があります。

VC ++ 2008には、 .NETを必要とするものはありません。VCランタイムのみを必要とするMFCアプリケーションを構築できます。

于 2009-09-24T17:32:30.817 に答える
0

ここで問題を理解しているかどうかはわかりませんが、展開プロジェクトで同様の問題を見てきました。.vdprojVisual Studio が提供するMSI Deployment Project ( ) を使用していますか? その場合...

プロジェクトに.NET 依存関係を追加してから削除しても、依存関係は残ります。これは GUI のバグです。依存関係はなくなったように見えますが、まだ残っています!.vdproj

ファイルをテキスト エディターで開き.vdproj、.NET 依存関係を手動で削除する必要があります。

于 2011-12-01T15:51:05.420 に答える