Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 从Razor类库导入.less文件_Asp.net Core_Less - Fatal编程技术网

Asp.net core 从Razor类库导入.less文件

Asp.net core 从Razor类库导入.less文件,asp.net-core,less,Asp.net Core,Less,我创建了一个Razor类库,以便能够在项目之间分发一些全局样式和视图,但我似乎无法从Razor类库导入.less文件 在我的RCL中,我有: Styles -Shared -layout.less -variables.less Styles -main.less 在参考RCL的项目中,我有: Styles -Shared -layout.less -variables.less Styles -main.less main.less仅具有

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

在我的RCL中,我有:

Styles
  -Shared
    -layout.less
    -variables.less
Styles
  -main.less
在参考RCL的项目中,我有:

Styles
  -Shared
    -layout.less
    -variables.less
Styles
  -main.less
main.less仅具有:

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


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

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


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

您可以手动管理生成顺序并在生成后运行powershell脚本(确保先生成正确的dll)并在生成网页包之前,查询dll并将所需文件(?)解压缩到wwwroot中的正确文件夹中,或任何位置。我认为这会在项目完成后发生,但我也不是网页方面的专家,而且我还没有真正尝试过


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

感谢您的回复。我确实担心这是需要的,但那样我就无法导入更少的文件并使用其中的变量,这正是我想要做的。看起来很奇怪,RCL中的视图可以被路径引用,但不能被其他东西引用,尽管我猜这是RCL的一个要点!视图也被嵌入。该路径被映射到嵌入式资源,即使它看起来像一个文件系统路径。这同样适用于其他静态资源:JS、CSS等。问题是像webpack这样的东西看不到嵌入的资源,因此无法对它们进行操作。