Installation LGHT0132使用Wix将Json.Net添加到GAC

Installation LGHT0132使用Wix将Json.Net添加到GAC,installation,wix,windows-installer,Installation,Wix,Windows Installer,我正在构建一个Wix安装程序,将json.net添加到GAC(我知道……GAC很糟糕,但订单就是订单)。在生成过程中,我遇到以下错误: 错误LGHT0132:出现程序集文件“path\Newtonsoft.Json.dll” 无效。请确保这是一个有效的程序集文件,并且 用户对此文件具有适当的访问权限。更多 信息:HRESULT:0x801310B 我使用的json.net是针对.NET4的。如果我在.NET2中使用json.net,它构建得很好,一点问题都没有 我的注册就这么简单: <Co

我正在构建一个Wix安装程序,将json.net添加到GAC(我知道……GAC很糟糕,但订单就是订单)。在生成过程中,我遇到以下错误:

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

我使用的json.net是针对.NET4的。如果我在.NET2中使用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。如果您有任何想法,我们将不胜感激。

我刚刚在WiX v3.8上对其进行了测试,它对我来说运行良好。自v3.5RTM开发以来,我不知道WiX工具集的这一部分有任何变化。错误
0x801310B
表示“此程序集由比当前加载的运行时更新的运行时生成,无法加载”。这几乎肯定意味着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上运行。如果失败,您将需要调查您的环境。

好的,我发现了我的错误。我使用的是psake构建脚本,框架版本设置为3.5。很明显这是行不通的。谢谢你的帮助,罗布。我用这个dll创建了一个小项目,它成功了。从那以后,我知道我一定在什么地方搞砸了。