Asp.net core 从Razor类库导入.less文件
我创建了一个Razor类库,以便能够在项目之间分发一些全局样式和视图,但我似乎无法从Razor类库导入.less文件 在我的RCL中,我有: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仅具有
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这样的东西看不到嵌入的资源,因此无法对它们进行操作。