2

json.net を GAC に追加する Wix インストーラーを作成しています (GAC が悪いことはわかっていますが、注文は注文です)。ビルド中に次のエラーが発生します。

エラー LGHT0132: アセンブリ ファイル 'path\Newtonsoft.Json.dll' が無効のようです。これが有効なアセンブリ ファイルであること、およびユーザーがこのファイルへの適切なアクセス権を持っていることを確認してください。詳細: HRESULT: 0x8013101b

私が使用している json.net は .NET 4 用です。.NET 2 用の json.net を使用すると、問題なくビルドできます。

私の登録はこれと同じくらい簡単です:

<Component Id="newtonsoft.json.gac.comp" Directory="GAC">
    <File Id="newtonsoft.json.gac.file" KeyPath="yes" Assembly=".net" Source="path\Newtonsoft.Json.dll" />
</Component>

Wix3.5を使用しています。どんなアイデアでも大歓迎です。

4

1 に答える 1

2

これを WiX v3.8 に対してテストしたところ、問題なく動作しました。v3.5 RTM 以降、WiX ツールセットのその部分に変更があったことは知りません。エラー0x8013101bは、「このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込めません」という意味です。これはほぼ確実に、WiX ツールセットが CLR2 で実行されており、CLR4 アセンブリを読み取れないことを意味します。

light.exe.config ファイルは次のようになります。

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

順序が重要です。行を削除してみてくださいv2.0.50727。これにより、WiX ツールセットが CLR4 でのみ実行されるようになります。それが失敗した場合は、環境を調査する必要があります。

于 2013-04-15T22:13:00.483 に答える