我正在使用Visual Studio 2015发布一个WPF应用程序。在发布之后,当我单击.application
文件时,它会抛出以下错误:
无法安装或运行应用程序。该应用程序要求程序集System.Windows.Interactivity Version 4.5.0.0首先安装在全局程序集缓存(GAC)中。
System.Windows.Interactivity
在我的应用程序的版本是4.0.0.0。那么为什么它会要求4.5.0.0呢?我在网上都找不到那个版本。
基于这个问题,我更新了我的app.config
有这个,但无济于事:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
在Visual Studio的错误列表选项卡中,它有以下警告:
发现无法解决的同一从属程序集的不同版本之间的冲突。当日志详细度设置为详细时,这些引用冲突将在构建日志中列出。
我做错了什么?谢谢。
显然,MVVM Light Toolkit在项目中安装了4.5版本的System.Windows.Interactivity
,这与4.0版本相冲突。解决方案:
- 展开项目参考。
- 找到
System.Windows.Interactivity
. - 右键单击,选择"删除"。
- 右键单击"引用",选择"添加引用"。
- 在Assemblies> Extensions下,选中
System.Windows.Interactivity
version 4.5.0.0的复选框。 点击OK关闭引用。
现在再次发布,安装程序工作正常。作为上述研究导致冲突的原因的一部分,我为构建启用了诊断输出,从而生成了详细日志。在大约第2000行,它包含了以下内容:
Unified Dependency "System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35". (TaskId:13)
1> Using this version instead of original version "4.0.0.0" in "C:UsersmyUserNameDocumentsVisual Studio 2015ProjectsMyProjectpackagesBlend.Interctivity.WPF.v4.0.1.0.3libnet40Microsoft.Expression.Interactions.dll" because of a binding redirect entry in the file "App.config". (TaskId:13)
1> Resolved file path is "C:UsersmyUserNameSourceWorkspacesWorkspacepackagesMvvmLightLibs.5.2.0.0libnet45System.Windows.Interactivity.dll". (TaskId:13)
1> Reference found at search path location "C:UsersmyUserNameSourceWorkspacesWorkspacepackagesMvvmLightLibs.5.2.0.0libnet45". (TaskId:13)
1> For SearchPath "C:UsersmyUserNameSourceWorkspacesWorkspacepackagesMvvmLightLibs.5.2.0.0libnet45". (TaskId:13)
1> Considered "C:UsersmyUserNameSourceWorkspacesWorkspacepackagesMvvmLightLibs.5.2.0.0libnet45System.Windows.Interactivity.winmd", but it didn't exist. (TaskId:13)
1> Required by "GalaSoft.MvvmLight.Platform, Version=5.2.0.37226, Culture=neutral, PublicKeyToken=5f873c45e98af8a1, processorArchitecture=MSIL". (TaskId:13)
1> Required by "Microsoft.Expression.Interactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". (TaskId:13)
1> This reference is not "CopyLocal" because it conflicted with another reference with the same name and lost the conflict. (TaskId:13)
1> The ImageRuntimeVersion for this reference is "v4.0.30319". (TaskId:13)