MVC 6中多个网站的常用wwwroot文件夹

时间:2015-02-17 02:29:28

标签: asp.net-core asp.net-core-mvc

我有多个网站使用/wwwroot/assets文件夹(html主题,css和javascript文件)来加载静态内容。

目前我正在复制每个网站中的assets文件夹。我的所有项目都位于一个公共父目录下。

我不想将/wwwroot/assets文件夹复制到每个网站。有没有办法在所有网站之间共享一个assets文件夹。可能是通过提供直接的文件系统路径吗?

1 个答案:

答案 0 :(得分:2)

目前还不清楚the documentation webroot文件中的project.json键会接受哪种值,但到目前为止看起来Visual Studio并不关心对于非常复杂的路径。例如,将值设置为../wwwroot会导致条目在解决方案资源管理器中消失。

如果查看the kpm code that bundles your project up for deployment,它似乎将项目的目录与wwwroot键中存储的内容组合在一起,因此即使Visual Studio可能无法理解,也会支持相对路径。在命令行中使用kpm bundle确认了这一点,并且在使用相对路径时,src上方的目录正确捆绑。

根据您的特定需求,有一种方法可以使kpm Visual Studio感到高兴,但这取决于您的构建环境是否适合您。

Windows,OSX和Linux都支持为目录创建符号链接,这样您就可以将资产目录放在文件系统中的一个位置,然后在其他位置创建指向它的链接。例如,如果您在/ projects / shared / assets中有资产,则可以在指向“真实”位置的其他项目(例如/ projects / project1 / src / wwwroot / assets)中创建链接。

在Windows中,命令可能会像这样

mklink /j "C:\link\to\create" "C:\path\to\assets"

所以如果你做了

mklink /j "C:\source\shared\assets" "C:\source\project1\src\wwwroot\assets"

project1似乎在wwwroot内有一个资产目录,并且构建过程会很高兴,因为每个项目看起来这些文件都是本地的。这里需要注意的一点是,Windows支持许多不同类型的链接。 /j专门创建联结而不是真正的符号链接。差异有点微妙,但差异是this is a good description。知道如果你在本地工作,/j命令不需要管理权限,Visual Studio和kpm都会很高兴就足够了。

在OSX和Linux中,命令类似:

ln -s /link/to/create /path/to/assets

和Windows一样,they support different sorts of links

在任何情况下,在适当的情况下,这可能会很好地工作,而不需要新的ASP.NET项目结构的任何特殊支持,但最终也可以这样做。