11

在 WPF 项目中,仅在 xaml 中使用的引用即使CopyLocal设置为 true 也不会复制到 bin 文件夹,正如本文所述。对于 MVVM 模式,通常使用 3rd 方控件而根本没有代码隐藏引用。

这篇文章的启发,我正在使用下面的解决方法。这很容易,但是,必须手动维护变量列表,使其与项目中 XAML 文件中实际使用的变量列表保持同步,这些变量列表会不断变化。我的问题是是否有真正的解决方案或更好的解决方法?(我知道使用构建后脚本的想法,恕我直言,它不太容易被发现并且更容易受到更改的影响。)

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.");
        }
    }
}
4

2 回答 2

8

我使用的解决方法是确保项目具有在 XAML 中定义的名称。这会导致它在生成的代码后面(部分)类中为它创建一个实例。这足以让引用跟随系统检测到引用,并复制到依赖 dll 中。

例如:

<ts:HorizontalToggleSwitch IsChecked="{Binding ShowMyItemsOnly}"
                           CheckedContent="Show My Items Only"
                           UncheckedContent="Show All Items"
                           x:Name="NameRequiredForCopyLocal">
于 2013-07-15T12:31:06.837 回答
2

这是 XAML 代码的一个已知问题。解析 XAML 代码时有些奇怪,因为 VisualStudio 知道使用了相应的 DLL。就我而言,它有助于从类后面的代码或项目中的任何类中的特定 DLL 创建任何对象的属性。(解决方法)

例如:

// This is only for the build process, to copy target assembly to output.
private RadTreeView _TreeViewForCompiler;
于 2015-03-31T12:28:35.523 回答