【问题标题】:Common wwwroot folder for multiple websites in MVC 6MVC 6 中多个网站的通用 wwwroot 文件夹
【发布时间】:2015-02-17 02:29:28
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试过为每个指向资产目录的站点只使用一个虚拟目录?

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


【解决方案1】:

目前尚不清楚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 专门创建 junction 而不是真正的符号链接。差异有点微妙,但 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 项目结构的任何特殊支持,但最终也能拥有它会很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多