我有多个网站使用/wwwroot/assets
文件夹(html主题,css和javascript文件)来加载静态内容。
目前我正在复制每个网站中的assets
文件夹。我的所有项目都位于一个公共父目录下。
我不想将/wwwroot/assets
文件夹复制到每个网站。有没有办法在所有网站之间共享一个assets
文件夹。可能是通过提供直接的文件系统路径吗?
答案 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项目结构的任何特殊支持,但最终也可以这样做。