2

我正在构建一个将 json.net 添加到 GAC 的 Wix 安装程序(我知道...... GAC 不好,但订单就是订单)。在构建期间,我收到此错误:

错误 LGHT0132:程序集文件 'path\Newtonsoft.Json.dll' 似乎无效。请确保这是一个有效的程序集文件,并且用户对该文件具有适当的访问权限。更多信息:HRESULT:0x8013101b

我正在使用的 json.net 用于 .NET 4。如果我将 json.net 用于 .NET 2,它构建得很好,完全没有问题。

我的注册很简单:

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

我正在使用 Wix 3.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 回答