如何确保在NuGet包中包含类库中定义的UserControl?

时间:2016-05-26 20:02:41

标签: c# xaml nuget uwp azure-artifacts

我需要使用UWP项目中的通用Windows类库中定义的UserControl,该项目将该类库作为依赖项。 (两个程序集都是我的。)在以前的项目中,当实现UserControl的项目是同一解决方案的一部分时,这很好。对于我目前的项目,我反而将类库作为NuGet包使用。当尝试从NuGet包中使用UserControl时,所有内容都会构建,但在运行时加载包含UserControl的页面时会立即抛出XamlParseException。

我找到this related question,它引导我here,这很有启发性(似乎生成的用户控件二进制文件由于某种原因不会自动包含在NuGet包中),但是建议的解决方案并不符合我的需要。建议似乎是从一个项目的bin中手动移动某些输出文件(* .xr.xml,* .pri,* .xbf)。对其他人来说,但这看起来并不可持续。如果在NuGet包中包含这些特定文件是答案,那么我该如何自动完成?我可以为“nuget pack'”提供一些特定的参数吗?如果我需要包含.nuspec文件,为了获得正确的文件,我需要包含哪些内容?

我的项目和工作流程的一些额外背景,以防相关:我正在使用Xamarin和MvvmCross构建跨平台应用,目前针对的是UWP和Android。定义我的用户控件的类库是我的UWP项目依赖的通用Windows类库。我使用Visual Studio Team Services为每个程序集托管repos;在办理登机手续时,它们会自动构建,测试,打包并发布到内部订阅源,在那里可以通过依赖它们的项目获取它们。我正在寻找一种解决方案,使我能够自动将所有必需的输出文件包含在我的NuGet包中,这样我就可以保持这种自动化水平。

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。目前没有任何命令可以使这项工作神奇地起作用。您必须手动指定所需文件的集合。

另外需要注意的是,您可能不需要在NuGet包中包含.xbf文件。 XAML编译器会将所有Xaml文件(除非覆盖)转换为.xbf,甚至是那些来自引用的扩展SDK或NuGet包的文件。但是,您确实需要包含Xaml文件,因为这将使Xaml设计器能够工作并且是Xaml编译器的输入。

您还可以考虑编写一个脚本来读取csproj并根据需要更新nuspec,并将其作为预打包和后期构建步骤所需的内容。

关于这个主题的一个很好的解读是Tim Heuer的帖子here

相关问题