Ответ 1
Это в Blend SDK, есть пакет NuGet или вы можете получить его здесь (устарело).
Мой проект отсутствует System.Windows.Interactivity
. Google говорит, что мне нужно установить Expression Blend, но на моем другом компьютере у меня есть эта библиотека, и у меня нет Expression Blend. Итак, должен быть другой способ получить System.Windows.Interactivity
? Что мне делать? (прямо сейчас у меня нет другого компьютера, поэтому я не могу просто скопировать эту библиотеку:)
Это в Blend SDK, есть пакет NuGet или вы можете получить его здесь (устарело).
Существует новый пакет NuGet, который содержит файл System.Windows.Interactivity.dll, совместимый с:
Чтобы установить Expression.Blend.Sdk, выполните следующую команду в консоли диспетчера пакетов
PM> Install-Package Expression.Blend.Sdk
Самый простой способ - получить его от NuGet:
http://www.nuget.org/packages/System.Windows.Interactivity.WPF/
С Blend для Visual Studio, который входит в состав Visual Studio, начиная с версии 2013, вы можете найти DLL в следующей папке:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
Вам нужно будет добавить ссылку на System.Windows.Interactivity.dll
самостоятельно, если вы не используете Blend для Visual Studio с существующим проектом, чтобы добавить функциональность, использующую пространство имен Interactivity. В этом случае Blend автоматически добавит ссылку.
Иногда, когда вы добавляете новую библиотеку, вводится своя версия System.Windows.Interactivity.dll
.
Например, для пакета NuGet MVVM light
может потребоваться v4.2 из System.Windows.Interactivity.dll
, но для пакета NuGet Rx-XAML
может потребоваться v4.5 из System.Windows.Interactivity.dll
. Это предотвратит работу проекта, поскольку независимо от того, какую версию 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
с фактической версией, на которую вы указываете:
Хотя эта проблема довольно старая, я думаю, что это релевантные новости/самый последний ответ: Microsoft с открытым исходным кодом XAML Behaviors и разместила в блоге сообщение о том, как обновить эту версию: https://devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/
Чтобы сохранить ваш клик, это основные шаги для миграции:
Альтернативное решение - изменить текущую установку Visual Studio в установщике Visual Studio.
Win + R %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vs_installer.exe
добавив Blend for Visual Studio SDK for.NET
"Отдельный компонент" в разделе "SDK, библиотеки и инфраструктуры":
после добавления этого компонента
System.Windows.Interactivity
должна появиться в своем обычном расположении Add Reference/Assemblies/Extensions
.
Это в MVVM Light, получите его из страницы загрузки MVVM Light.
Я получил его через Prism.WPF NuGet-Package. (он включает в себя Windows.System.Interactivity)
Если вы работаете с 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 вручную в качестве ссылки, и все должно быть в порядке.