我们有一个内部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
之外的其他软件包?