仅在XAML中使用软件包时项目之间的Nuget软件包依赖关系

时间:2019-10-07 21:23:49

标签: c# wpf nuget

我有带有Windows应用程序的C#WPF应用程序解决方案和实现某些视图和视图模型的类库DLL。我将Extended.Wpf.Toolkit程序包添加到DLL项目中,并在我的DLL项目中从XAML使用该程序包中的控件。可执行项目引用DLL项目。在我构建时,没有将软件包中的DLL复制到可执行项目的bin / Debug文件夹中(它们当然在DLL项目的bin / Debug中)。

DLL项目使用其他一些软件包,并且这些DLL会自动出现在可执行bin / Debug文件夹中。在Extended.Wpf.Toolkit中唯一的区别是,我没有使用此包中的任何东西进行任何代码隐藏。

我尝试使用Extended.Wpf.Toolkit中的随机类将一些伪代码添加到DLL项目中,然后其中一个DLL出现在bin中。因此,显然Visual Studio现在可以在某种程度上确认这种依赖性(尽管它仅复制一个DLL)。

DLL项目中的XAML:

<UserControl x:Class="MyNameSpace.PropertyPanel"
    ...
    xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
    >
    <Grid>
        <xctk:PropertyGrid/>
    </Grid>
</UserControl>

因此,显然我也需要将nuget包添加到可执行项目中吗?为什么使用来自XAML的程序包和代码隐藏程序之间会有区别?

如果重要,请使用Visual Studio 2017社区版。 nugetpackages.config位于类库项目中:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Extended.Wpf.Toolkit" version="3.6.0" targetFramework="net452" />
  <package id="SharpVectors.Reloaded" version="1.3.0" targetFramework="net452" />
</packages>

很抱歉,缺少简单的可复制项目。

1 个答案:

答案 0 :(得分:1)

  

为什么使用XAML软件包与隐藏代码之间有区别?

这是一个已知的XAML问题。编译器不会复制仅在XAML中使用的引用。

解决方法很简单。在类库项目中将程序集的Copy Local属性设置为True,在使用中的WPF application项目中安装NuGet软件包。