0

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

我发现了这个相关的问题,它把我带到了这里,这很有启发性(似乎为用户控件生成的二进制文件由于某种原因没有自动包含在 NuGet 包中),但建议的解决方案不符合我的需要。建议似乎是将某些输出文件(*.xr.xml、*.pri、*.xbf)从一个项目的“bin”手动移动到另一个项目的“bin”,但这似乎不可持续。如果在 NuGet 包中包含这些特定文件是答案,那么我该如何自动执行此操作?我可以为“nuget pack”提供一些特定的参数集吗?如果我需要包含一个 .nuspec 文件,我需要包含什么才能获得正确的文件?

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

4

1 回答 1

0

简短的回答是否定的。目前没有一组命令可以神奇地完成这项工作。您必须手动指定所需的文件集。

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

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

关于这个主题的好读物是 Tim Heuer 在此处的帖子

于 2016-05-26T22:30:53.090 回答