在WPF项目中,即使CopyLocal
设置为true,也不会将仅在xaml中使用的引用复制到bin文件夹,如this post中所抱怨的那样。对于MVVM模式,通常使用第三方控件而根本没有代码隐藏引用。
受this post的启发,我正在使用下面的解决方法。然而,这很容易,必须手动维护变量列表与整个项目中XAML文件中实际使用的变量列表同步,这些变量列表会不断变化。我的问题是,是否有真正的解决方案或更好的解决方法? (我知道使用post-build脚本的想法,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.");
}
}
}
答案 0 :(得分:7)
我使用的解决方法是确保项目在XAML中定义了名称。这使它在后面(部分)类的生成代码中为它创建一个实例。这足以使引用跟随系统检测引用,并在依赖项dll中复制。
e.g:
<ts:HorizontalToggleSwitch IsChecked="{Binding ShowMyItemsOnly}"
CheckedContent="Show My Items Only"
UncheckedContent="Show All Items"
x:Name="NameRequiredForCopyLocal">
答案 1 :(得分:1)
这是XAML-Code的已知问题。在解析XAML-Code时有一些奇怪的东西,因为VisualStudio知道,使用了相应的DLL。对于我的情况,它有助于从类代码中的特定DLL或项目中的任何类创建任何对象的属性。 (解决方法)
例如:
// This is only for the build process, to copy target assembly to output.
private RadTreeView _TreeViewForCompiler;