NuGet包作为ASP.NET Core MVC项目中的链接安装的contentFiles工件

时间:2018-02-26 18:16:32

标签: asp.net-core nuget asp.net-core-mvc nuget-package

我们有一个内部JavaScript库,我们想在多个项目之间共享。实际上我们已经通过文件复制来共享它了,但这已经(可以预见地)产生了代码的多个分支。

消费项目是“完整”ASP.NET(MVC和Web窗体)和ASP.NET核心MVC的混合体。 (我打算创建两个独立的包。)

安装到ASP.NET项目似乎工作正常,但我遇到了ASP.NET Core的问题。

最初,我拥有files元素中的所有工件,并且在消费项目中根本没有显示任何工件。重新阅读文档后,我意识到ASP.NET核心项目将使用PackageReference ...所以我必须使用contentFiles元素而不是(或除了){{{ 1}}元素。

我创建了一个contentFiles文件夹和一个脚本,用于将必需的文件从源项目文件夹结构复制到files,并相应地修改了包清单。

这很有效。有点。该包似乎正确构建。文件确实被添加到消费项目中,但它们被添加为链接;实际文件(链接目标)驻留在我的本地包缓存中。

包裹清单的相关部分是:

contentFiles/any/any/wwwroot/lib/ourAwesomeWidget

问题的一部分是我没有找到关于<metadata minClientVersion="3.3"> ... <contentFiles> <files include="**/*" buildAction="Content" copyToOutput="true" flatten="false" /> </contentFiles> </metadata> <files> <file src="contentFiles\**" target="contentFiles" /> </files> 的文件非常清楚。所有示例都显示了一个contentFiles元素...但file元素上的include属性是必需的,因此不清楚单个files元素甚至会做什么

有没有办法让实际文件(不是链接)添加到消费项目中?或者,有没有办法让软件包安装为“普通”软件包(而不是file)?

更新 我做了一些进一步的挖掘并找到了this answer by @Martin to a similar question - 但是在我有机会更新它之前他回答了这个问题 看来这种行为(将文件添加为链接)是设计使然。

我发现这非常不令人满意,因为(正如@Martin指出的那样),我们的JavaScript库在开发消费项目时将无法使用。

但我的问题的第2部分仍然存在。根据{{​​3}},

  

默认情况下,PackageReference用于.NET Core项目,.NET Standard项目和面向Windows 10 Build 15063(创建者更新)及更高版本的UWP项目。

是否有办法触发非默认行为,即允许.NET Core项目使用除PackageReference之外的其他软件包?

0 个答案:

没有答案