我的项目缺失System.Windows.Interactivity
库。谷歌搜索结果显示我需要安装Expression Blend,但是我的另一台电脑上已经有这个库了,而且没有安装Expression Blend。那么获得System.Windows.Interactivity
库的另外一种方法是什么呢?我该怎么办?(目前我没有另一台电脑可以复制这个库 :))
我的项目缺失System.Windows.Interactivity
库。谷歌搜索结果显示我需要安装Expression Blend,但是我的另一台电脑上已经有这个库了,而且没有安装Expression Blend。那么获得System.Windows.Interactivity
库的另外一种方法是什么呢?我该怎么办?(目前我没有另一台电脑可以复制这个库 :))
Prism.Wpf
包仍然包含System.Windows.Interactivity
。如果您使用Prism框架,则不需要使用Microsoft.Xaml.Behaviors.Wpf
。 - Jeong Hansol行为的官方包是 Microsoft.Xaml.Behaviors.Wpf
。
它曾经在 Blend SDK(已弃用)中。
如果需要迁移,请参阅Jan's answer以获取更多详细信息。
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
而不是在我看到的每个其他示例中都是 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
。 - Yosef Bernal现有一个新的NuGet包含有System.Windows.Interactivity.dll文件,兼容于:
若要安装Expression.Blend.Sdk,请在“程序包管理器控制台”中运行以下命令:
PM> Install-Package Expression.Blend.Sdk
System.Windows.Interactivity
冲突的版本。要解决此问题,请参见上面的答案。 - Contango最简单的方法可能是从NuGet获取它:
http://www.nuget.org/packages/System.Windows.Interactivity.WPF/
使用Visual Studio 2013及以上版本附带的Blend for Visual Studio,你可以在以下文件夹中找到DLL文件:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
除非您使用Visual Studio的Blend并带有使用Interactivity命名空间的现有项目以添加功能,否则您将不得不自己添加对System.Windows.Interactivity.dll
的引用。在这种情况下,Blend将自动添加引用。
System.Windows.Interactivity.dll
版本冲突的库。
例如,NuGet包MVVM light
可能需要System.Windows.Interactivity.dll
的v4.2版本,但是NuGet包Rx-XAML
可能需要System.Windows.Interactivity.dll
的v4.5版本。这将导致项目无法工作,因为无论你包含哪个版本的System.Windows.Interactivity.dll
,其中一个库都会拒绝编译。
要解决这个问题,请编辑你的app.config
文件,添加一个程序集绑定重定向,使其类似于以下内容:<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity"
publicKeyToken="31bf3856ad364e35"
culture="neutral"/>
<bindingRedirect oldVersion="4.0.0.0"
newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<appSettings>
<add key="TestKey" value="true"/>
</appSettings>
</configuration>
不用担心更改 PublicKeyToken
,因为它在所有版本中都是固定的,它取决于.dll文件的名称,而不是版本。
确保您在appConfig
中匹配newVersion
与您最终指向的实际版本相对应:
我也遇到了同样的问题,解决方案是需要在Visual Studio 2019项目中使用System.Windows.Interactivity
,我尝试从Visual Studio 2019个人组件中安装Blend for Visual Studio SDK for .NET
,但是没有找到它。
这导致我的解决方案中的项目构建失败,并且我在项目中不同的XAML部分反复出现以下类似错误:
The tag 'Interaction.Behaviors' does not exist in XML namespace 'clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity'.
解决方法是,我通过从Microsoft安装Microsoft Expression Blend Software Development Kit (SDK) for .NET 4,来解决这个问题。
感谢我的同事@felza提到需要此sdk,因为System.Windows.Interactivity
需要该sdk,而该sdk应该位于以下文件夹中:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0
在我的情况下,它没有被安装。我一直有这个文件夹 C:\Program Files (x86)\Microsoft SDKs
,但里面没有 Expression\Blend\.NETFramework\v4.0
文件夹。
安装后,所有错误都消失了。
这是在MVVM Light中,可以从MVVM Light下载页面获取。
Install-Package MvvmLightLibs -Version 5.3.0
。 - hdev我是通过Prism.WPF NuGet包获取的。(它包括Windows.System.Interactivity)