Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net (InstallShield)如果不是以管理员身份运行,WPF可执行文件将调用错误的dll版本_.net_Wpf_Visual Studio 2015_Installshield_Installshield Le - Fatal编程技术网

.net (InstallShield)如果不是以管理员身份运行,WPF可执行文件将调用错误的dll版本

.net (InstallShield)如果不是以管理员身份运行,WPF可执行文件将调用错误的dll版本,.net,wpf,visual-studio-2015,installshield,installshield-le,.net,Wpf,Visual Studio 2015,Installshield,Installshield Le,我对我的可执行项目有一个非常奇怪的问题。我已经在发布模式(x86)下使用InstallShield创建了这个包 最近,这个已部署的可执行文件开始表现出奇怪的行为(我尝试回滚并找到原因,但这没有任何帮助)。当我通过InstallShield项目创建可执行文件时,它看起来就像我期望的那样 我遇到的问题是运行应用程序。如果我以管理员身份运行,我就能够按预期登录并运行所有内容。但是,如果我不是以管理员身份运行此程序,则会出现以下错误(在第一次提到使用newtonsoft.json.dll类时): [Sy

我对我的可执行项目有一个非常奇怪的问题。我已经在发布模式(x86)下使用InstallShield创建了这个包

最近,这个已部署的可执行文件开始表现出奇怪的行为(我尝试回滚并找到原因,但这没有任何帮助)。当我通过InstallShield项目创建可执行文件时,它看起来就像我期望的那样

我遇到的问题是运行应用程序。如果我以管理员身份运行,我就能够按预期登录并运行所有内容。但是,如果我不是以管理员身份运行此程序,则会出现以下错误(在第一次提到使用newtonsoft.json.dll类时):

[System.IO.FileLoadException:无法加载文件或程序集'Newtonsoft.Json,版本=9.0.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之一 定位程序集的清单定义与程序集不匹配 参考。(HRESULT中的异常:0x8013100)文件名: 'Newtonsoft.Json,版本=9.0.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'-->System.IO.FileLoadException: 无法加载文件或程序集'Newtonsoft.Json,版本=4.5.0.0, 文化=中性,PublicKeyToken=30AD4FE6B2A6EED'或其 依赖项。定位的程序集的清单定义不存在 匹配程序集引用。(来自HRESULT的异常:0x8013100) 文件名:'Newtonsoft.Json,版本=4.5.0.0,区域性=neutral, PublicKeyToken=30AD4FE6B2A6EED'

警告:程序集绑定日志记录已关闭。若要启用程序集绑定,请执行以下操作: 记录失败,请设置注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)至1。注意:此处 某些性能损失是否与程序集绑定失败相关 要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]

位于System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()处 Player.Services.DataService.UploadLogToServer(AuditdToRecord)
在Player.Controller.playerControl.logInfo(字符串事件代码, 字符串信息、字符串类名、异常(e)

]

如果我以管理员的身份运行,我根本看不到这一点。对于dll被错误引用等类似问题,我尝试了多种解决方案。所有这些都没有产生任何影响。我没有任何对这些版本的引用。我目前使用的是版本10.0.0.0(Nuget package 10.0.3),我还尝试使用版本9.0来满足版本9所需的错误。这也有与上面相同的结果。我检查了它是否为我的.net framework的正确dll和版本,并尝试了50多次卸载它,然后重新安装、更新、手动引用它

我已尝试更改我电脑上所有用户的安全权限,以授予everything/everyone对部署我的可执行文件的所有文件夹的完全访问权和权限。同样,这也没有解决问题

我还尝试从PC上的明显位置清除对newtonsoft.json.dll的所有其他引用,以及包含与我的项目或newtonsoft.json.dll相关的任何和所有临时文件夹、隐藏文件夹、visual studio和microsoft文件夹

我清除了所有的构建(调试和发布文件夹),清理并重建了整个解决方案文件夹,我仍然不知道发生了什么以及如何解决这个问题

重要提示: 当我构建了我的项目(发布模式)后,我能够从项目的bin/x86/release文件夹中按预期运行exe(普通用户),而不会发生错误。这使我相信这可能与installshield或我的installshield配置有关?不确定,但这可能是有用的信息

任何建议,想法,或者如果有人遇到类似的事情并修复了它,我将非常感谢您在下面给我的任何建议



更新: Eugene B的回答有助于解决此问题。虽然此解决方案可能不是最佳做法,但我仍然不确定原因、原因,甚至根本问题是什么,我将在下面分享我是如何解决此问题的:


感谢您的建议。不幸的是,日志没有提供任何有用的信息。添加的版本似乎不在我的计算机上,也不在我的项目中的任何位置引用。您的答案的最后部分帮助我解决了问题。我将dll引用版本:9.0.0.0直接添加到installshield文件。然后,我决定将wpf项目中dll的10.0.0.0版回滚到9版。最后,它再次以管理员和普通用户的身份运行。我很想知道这里的根本问题是什么。非常感谢


如果任何人确实知道或理解问题的根本原因以及installshield le请求此文件的版本9的原因,请回答或在下面添加注释。

查看installshield项目编译日志。如果您的项目中没有明确列出程序集,并且installshield确定它是一个依赖程序集如果需要添加,它将为您添加,并在其编译日志中创建一个条目(通常位于子目录\LogFiles中)。它可能添加了一个版本,该版本在目标计算机上不存在,或者位于具有不同访问级别的目录中,因此只有管理员可以访问该版本。如果尚未添加,请尝试将程序集显式添加到InstallShield(InstallScript)project.

感谢您的建议。遗憾的是,日志没有提供任何有用的信息。似乎添加的版本不在我的计算机上,也不在我的项目中的任何位置引用。您回答的最后一部分帮助我解决了问题。我添加了dll引用版本:9.0.0.0 directl