Сборка, используемая только в XAML, не копируется в папку bin
в проекте WPF ссылки, используемые только в xaml, не копируются в папку bin даже с CopyLocal
установите значение true, как указано в этот пост. С шаблоном MVVM часто используются сторонние элементы управления без ссылок на код вообще.
вдохновленный этот пост, Я использую обходной путь ниже. Это достаточно просто, однако, нужно вручную поддерживать список переменных в синхронизации с теми, которые фактически используются в файлах XAML через проект, который подвержен постоянным изменениям. Мой вопрос в том, есть ли реальное решение, или лучше обойти? (Я знаю об идее использования сценария после сборки, который IMHO менее открыт и более уязвим для изменений.)
internal static class BuildTricker
{
private static readonly RadTreeView radTreeView;
static BuildTricker()
{
// Set and get once to avoid compiler optimization.
radTreeView = null;
if (radTreeView != null)
{
throw new InvalidOperationException("This should never happen.");
}
}
}
2 ответов
обходной путь, который я использую, - убедиться, что у элемента есть имя, определенное в XAML. Это заставляет его создавать экземпляр для него в сгенерированном коде за (частичным) классом. Этого достаточно для следующей системы ссылок, чтобы обнаружить ссылку и скопировать ее в библиотеку зависимостей.
например:
<ts:HorizontalToggleSwitch IsChecked="{Binding ShowMyItemsOnly}"
CheckedContent="Show My Items Only"
UncheckedContent="Show All Items"
x:Name="NameRequiredForCopyLocal">
Это известная проблема с XAML-кодом. Есть что-то странное во время разбора XAML-кода, потому что VisualStudio знает, что используется соответствующая DLL. Для моего случая это помогло создать атрибут любого объекта из конкретной DLL в коде позади класса или любого класса в проекте. (Обходной путь)
например:
// This is only for the build process, to copy target assembly to output.
private RadTreeView _TreeViewForCompiler;