【问题标题】:importing .less file from Razor Class Library从 Razor 类库导入 .less 文件
【发布时间】:2019-11-28 13:13:53
【问题描述】:

我创建了一个 Razor 类库,以便能够跨项目分发一些全局样式和视图,但我似乎无法从 Razor 类库导入我的 .less 文件。

在我的 RCL 中,我有:

Styles
  -Shared
    -layout.less
    -variables.less

在引用我的 RCL 的项目中:

Styles
  -main.less

main.less 只有:

@import "./Shared/variables.less";

当我通过 webpack 运行构建时,我收到无法解析 ./Shared/variables.less 的错误,但如果我将共享目录从 RCL 复制到引用它的项目中,它就可以正常工作。

我将 RCL .less 文件的 BuildAction 设置为 Content,是否有我遗漏的内容,或者这是不可能的?

【问题讨论】:

    标签: asp.net-core less


    【解决方案1】:

    这是一些可能的事情,但不是专门针对您在这里尝试做的事情。 RCL 最终是一个 DLL,因此您可以在其中包含的唯一内容就是可以“编译”到其中的内容。我说用引号编译,因为静态文件可以作为嵌入式资源包含在内,所以虽然它们本身没有被编译,但它们实际上仍然被嵌入到生成的 DLL 中。使用ManifestEmbeddedFileProvider,使用您的 RCL 的应用程序可以从这些嵌入式资源中读取,就好像它们确实在文件系统上一样。

    然而,重要的是,它们不在文件系统上,这意味着使用 webpack 之类的东西是 100% 不行的。您需要做的实际上是将 webpack 构建作为 RCL 的一部分,然后将生成的静态资源嵌入到 RCL 中。然后,您的应用可以为自己的资源构建自己的 webpack,但您无法将 RCL 中的原语与您的应用中的原语结合起来。

    【讨论】:

    • 感谢您的回复。我确实担心这是需要的,但是我将无法导入较少的文件并使用其中的变量,这是我想要做的。 RCL 中的视图可以通过路径而不是其他东西来引用,这似乎很奇怪,尽管我想这首先是 RCL 的重点!
    • 视图也是嵌入的。该路径被映射到嵌入式资源,即使它看起来像一个文件系统路径。这同样适用于其他静态资源:JS、CSS 等。问题是 webpack 之类的东西看不到嵌入的资源,因此无法对其进行操作。
    【解决方案2】:

    您可以手动管理构建顺序并在构建后运行 powershell 脚本(确保首先构建正确的 dll)并询问 dll 并将所需的文件(?)提取到 wwwroot 中的正确文件夹或任何位置, 在 webpack 构建之前。我认为这会在项目构建后发生,但我也不是 webpack 方面的专家,我还没有真正尝试过。

    从技术上讲,如果您希望将任何静态或视图文件嵌入到 dll 中,您可以选择“嵌入式资源”,这就是我过去的做法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2016-09-05
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多