我正在尝试构建一个可在项目之间重用的库,但可悲的是,并非所有来自该库的引用都被“拉到”引用该库的应用程序项目中……希望我能明白。
让我解释一下。我以较小的规模重现了问题,这是设置。我有一个Visual Studio解决方案,其中包含2个项目:
TestApp引用SomeLib。 我在SomeLib中添加了2个nuget(和依赖项):
SomeLib包含此类:
public class TestMe
{
public TestMe()
{
SharpDX.Direct2D1.AntialiasMode thing = SharpDX.Direct2D1.AntialiasMode.Aliased;//use sharpdx for ... something.
}
}
...以及此WPF用户控件:
<UserControl x:Class="SomeLib.TestView"
...
xmlns:xtk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:xad="http://schemas.xceed.com/wpf/xaml/avalondock">
<Grid>
<xad:DockingManager>
<xad:DockingManager.Theme>
<xad:VS2010Theme />
</xad:DockingManager.Theme>
<xad:LayoutRoot>
</xad:LayoutRoot>
</xad:DockingManager>
</Grid>
</UserControl>
TestApp的MainWindow使用此xaml:
<Window
...
xmlns:SomeLib="clr-namespace:SomeLib;assembly=SomeLib" x:Class="TestApp.MainWindow">
<Grid>
<SomeLib:TestView/>
</Grid>
</Window>
...以及此代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
SomeLib.TestMe thing = new SomeLib.TestMe();
}
}
现在,在构建之后,我检查输出文件夹,并注意到SharpDX组件被“拉”到了那里,但没有Xceed组件。
有趣的是,使用Visual Studio设计器在视图和窗口上,我看到AvalonDock在那里实例化了,没有任何错误。
运行时,出现以下错误:System.Windows.Markup.XamlParseException:'无法加载文件或程序集'Xceed.Wpf.AvalonDock
...当然。
现在我想念什么?为什么将SharpDX程序集正确“拉”到子项目而不是Xceed程序?
编辑: 感谢Zinov;使用包含在Cce代码中的Xceed引用 中的任何对象都可以工作,并且可以使子项目的输出文件中包含dll。因此,现在的问题是,有没有办法从XAML做到这一点?