Вот несколько простых, способов сохранения порядка для разных списков строк.
Код
Необычный подход с использованием pathlib
:
import pathlib
temp1 = ["One", "Two", "Three", "Four"]
temp2 = ["One", "Two"]
p = pathlib.Path(*temp1)
r = p.relative_to(*temp2)
list(r.parts)
# ['Three', 'Four']
Это предполагает, что оба списка содержат строки с эквивалентными началами. Подробнее см. docs . Обратите внимание, что это не особенно быстро по сравнению с заданными операциями.
Прямая реализация с использованием itertools.zip_longest
:
import itertools as it
[x for x, y in it.zip_longest(temp1, temp2) if x != y]
# ['Three', 'Three', 'Four']
Просто предположите, что вы не ссылаетесь на библиотеки в проекте MAIN.
Это случилось со мной несколько раз.
Ответ Тилака очень помог мне, но мне также нужно было назвать хотя бы один элемент из сборника «i» в коде XAML. Когда элемент назван, Visual Studio правильно подключает сборку.
Измените
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
на
<i:InvokeCommandAction Command="{Binding MyCommand}" x:Name="interactivityFix" />
Это нужно сделать только для одного элемента во всем файле XAML.
Вы можете сканировать каждый из ваших проектов для версии System.Windows.Interactivity, например. 4.0.0.0 или 4.5.0.0. Кроме того, есть вероятность, что одна из сторонних dll, которые могут ссылаться, зависит от System.Windows.Interactivity. Поэтому убедитесь, что вы выровняете версию в своем проекте. Это должно решить вашу проблему.
Иногда, когда вы добавляете новую библиотеку, вводите конфликтовую версию 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
с фактической версией, на которую вы указываете:
Вы можете найти эту DLL в Blend SDK.
Ниже приведена ссылка на нее:
http://www.microsoft.com/en-us/download /details.aspx?id=10801
Вы можете проверить свойства проекта -> Build -> Output Path.
Переход к выходному директории пути с помощью проводника Windows. Затем посмотрите, существует ли в этой папке «System.Windows.Interactivity.dll». Это может быть связано с тем, что флаг CopyLocal является ложным или существует причина. DLL-файл не генерируется в папке выходного пути.