我的项目缺少System.Windows.Interactivity
。谷歌说我必须安装Expression Blend,但在我的另一台电脑上我有这个库,我没有安装Expression Blend。那么应该有另一种获取System.Windows.Interactivity
的方法吗?我该怎么办? (现在我没有另外一台电脑,所以我不能只复制这个库:)。
答案 0 :(得分:54)
有一个新的NuGet包,其中包含与以下内容兼容的System.Windows.Interactivity.dll:
要安装Expression.Blend.Sdk,请在程序包管理器控制台中运行以下命令
PM> Install-Package Expression.Blend.Sdk
答案 1 :(得分:53)
在Blend SDK中,有一个NuGet package或者你可以得到它here(过时)。
答案 2 :(得分:22)
最简单的方法可能是从NuGet获取它:
http://www.nuget.org/packages/System.Windows.Interactivity.WPF/
答案 3 :(得分:18)
使用 Blend for Visual Studio (包含在从2013版开始的Visual Studio中),您可以在以下文件夹中找到DLL:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
您必须自己添加对System.Windows.Interactivity.dll
的引用,除非您使用Blend for Visual Studio与现有项目添加使用Interactivity命名空间的功能。在这种情况下,Blend将自动添加引用。
答案 4 :(得分:17)
有时,当您添加新库时,会引入碰撞版本的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>
不要担心在所有版本中更改PublicKeyToken
,这是常量,因为它取决于.dll的名称,而不是版本。
确保您将newVersion
中的appConfig
与最终指向的实际版本相匹配:
答案 5 :(得分:11)
另一种解决方案是在Visual Studio安装程序中修改当前的Visual Studio安装
Win + R %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vs_installer.exe
在“ SDK,库和框架”下添加Blend for Visual Studio SDK for .NET
“单个组件”:
添加此组件后,System.Windows.Interactivity
应该出现在其常规位置Add Reference/Assemblies/Extensions
中。
答案 6 :(得分:5)
我在解决方案中遇到了完全相同的问题,即 Visual Studio 2019 中的一个项目需要 System.Windows.Interactivity
,我尝试从 Visual Studio 2019 单个组件安装 Blend for Visual Studio SDK for .NET
,但是它不存在于其中。
后果,我无法在我的解决方案中构建项目,并在项目的不同 XAML 部分重复遵循类似错误:
<块引用>XML 命名空间中不存在“Interaction.Behaviors”标签 'clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity'。
解决方案,我的解决方法是安装来自 Microsoft 的 Microsoft Expression Blend Software Development Kit (SDK) for .NET 4。
感谢我的同事 @felza,提到 System.Windows.Interactivity
需要此 sdk,假设位于此文件夹中:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0
就我而言,它没有安装。我有这个文件夹 C:\Program Files (x86)\Microsoft SDKs
,里面没有 Expression\Blend\.NETFramework\v4.0
文件夹。
安装后,所有错误都消失了。
答案 7 :(得分:2)
在MVVM Light中,从MVVM Light Download Page获取它。
答案 8 :(得分:1)
我是通过Prism.WPF NuGet-Package获得的。 (它包括Windows.System.Interactivity)
答案 9 :(得分:0)
尽管此问题已经很久了,但我认为这是相关新闻/最新答案:Microsoft开源XAML行为,并在博客中发布了如何更新到此版本:https://devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/
要保存您的点击,这是迁移的主要步骤:
答案 10 :(得分:0)
如果使用的是MVVM Light,则必须使用System.Windows.Interactivity Version 4.0
(NuGet .dll无法正常工作),您可以在以下位置找到它:
PathToProjectFolder\Software\packages\MvvmLightLibs.5.4.1.1\lib\net45\System.Windows.Interactivity.dll
只需手动添加此.dll作为参考,就可以了。