【问题标题】:How to create NuGet package that add only JavaScript/CSS to web-based project?如何创建仅将 JavaScript/CSS 添加到基于 Web 的项目的 NuGet 包?
【发布时间】:2018-11-16 21:07:36
【问题描述】:

我有一些 NuGet 包,其中包含 DLL 文件和 Web 相关文件,如 JavaScript、样式表和图像文件。我想创建仅将 Web 相关文件安装到 Web 项目(包括 ASP.NET 和 ASP.NET MVC 项目)的包。最简单的方法是什么?

谢谢,

PS。我认为应该可以通过 Powershell 脚本实现。但我认为,这对我来说相当复杂。

【问题讨论】:

  • 为什么不想将 dll 包含到 web 项目中?你在打包什么?有 2 个包有意义吗?
  • 请仔细阅读我的问题。我只需要将 DLL 安装到其他类似的类库中。另一方面,我需要将 DLL 和 Web 相关文件(包括 JS 和 CSS)安装到 ASP.NET 网站或 ASP.NET MVC 等 Web 项目。
  • 您可能需要学习一点 PowerShell。
  • 目前,我决定将 dll 移到主包中,并仅将另一个包用于与 Web 相关的文件。但是,这种方式并不能解决长期发展的问题。

标签: nuget


【解决方案1】:

您可能想使用Nuget Package Explorer。它允许您在没有命令行的情况下创建一个包,并且只将所需的文件添加到您的包中(加上一些简单的配置)。

如果我理解正确,您有时只想安装 DLL,有时只想安装 DLL 和 Web 内容。在这种情况下,最好为 DLL 创建一个单独的包,然后创建另一个包含 Web 内容的包,该包将 DLL 包指定为 Web 包的依赖项。这样,当您添加 Web 内容时,它会自动添加 DLL。

Here's a tutorial on Nuget Package Explorer这可能会对你有所帮助。

【讨论】:

    【解决方案2】:

    我有一个在几个项目中使用的解决方案,效果非常好。

    创建第二个 .Assets 项目,其中包含资产,并将所有文件作为项目中的链接引用,并将它们标记为嵌入资源。

    YourProject.Assets - 包含 css/html/js/cshtml 文件 YourProject - 包含为链接的文件,标记为嵌入式资源

    然后包含我的EmbeddedResourceVirtualPathProvider Nuget 包,它将为您提供来自 YourProject.dll 中嵌入式资源的资产。

    如果有人想要覆盖资源,他们可以安装 .Assets nuget 包,他们将被包含在他们的项目中并提供服务。

    【讨论】:

    • 在 NuGet 包中部署 JavaScript 或图像文件是不正常的方式,因为 Web 服务器无法针对此类资源进行优化。但是此解决方案可能适用于某些不想将任何其他文件添加到已部署项目而不是其 dll 的包。
    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2014-08-04
    • 2015-04-18
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多