如何将System.Windows.Interactivity添加到项目?
我的项目缺lessSystem.Windows.Interactivity
。 谷歌说,我必须安装Expression Blend,但在我的其他电脑上,我有这个库,我没有安装Expression Blend。 那么应该有另一种方法来获取System.Windows.Interactivity
? 我该怎么办? (现在我没有另一台电脑,所以我不能只是复制这个图书馆:)
它在Blend SDK中,有一个nu-get包 ,或者你可以在这里得到它(过时)。
有一个新的NuGet包含System.Windows.Interactivity.dll是兼容的:
- WPF 4.0,4.5
- Silverligt 4.0,5.0
- Windows Phone 7.1,8.0
- Windowsapp store8,8.1
要安装Expression.Blend.Sdk,请在程序包pipe理器控制台中运行以下命令
PM> Install-Package Expression.Blend.Sdk
最简单的方法可能是从NuGet中获取:
http://www.nuget.org/packages/System.Windows.Interactivity.WPF/
有时,当你添加一个新的库时,引入了一个冲突版本的System.Windows.Interactivity.dll
。
例如,NuGet包MVVM light
可能需要System.Windows.Interactivity.dll
v4.2,但NuGet包Rx-XAML
可能需要v4.5的System.Windows.Interactivity.dll
。 这将阻止项目工作,因为无论您包含哪个版本的System.Windows.Interactivity.dll
,其中一个库都会拒绝编译。
要解决这个问题,通过编辑你的app.config
来添加一个Assembly Binding Redirect,看起来像这样:
<?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
与您最终指向的实际版本进行匹配:
对于从Visual Studio 2013开始的Visual Studio包含的Blend ,您可以在以下文件夹中find该DLL:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
除非您使用Blend for Visual Studio和现有项目来添加使用Interactivity名称空间的function,否则必须自己添加对System.Windows.Interactivity.dll
的引用。 在这种情况下,Blend会自动添加参考。
它在MVVM Light中,从MVVM Light下载页面中获取 。
我通过Prism.WPF NuGet包得到它。 (它包括Windows.System.Interactivity)