Asp.net core mvc asp.net核心,包括共享内容文件

Asp.net core mvc asp.net核心,包括共享内容文件,asp.net-core-mvc,asp.net-core-1.0,Asp.net Core Mvc,Asp.net Core 1.0,我有一个共享项目,其中包含一些内容文件,如JSON等 我有许多ASP.Net核心项目,我想包括/共享其中一些JSON文件。VS中的“链接到文件”选项非常简单,但在ASP.Net核心项目中不可用 我试着按如下方式使用buildOptions/copyToOutput,但这似乎不起作用,并且在构建过程中没有记录错误或警告 "copyToOutput": { "include": [ "../Common.Includes/mysettings*.json" ] } 有什么想法被感激地接受了

我有一个共享项目,其中包含一些内容文件,如JSON等

我有许多ASP.Net核心项目,我想包括/共享其中一些JSON文件。VS中的“链接到文件”选项非常简单,但在ASP.Net核心项目中不可用

我试着按如下方式使用buildOptions/copyToOutput,但这似乎不起作用,并且在构建过程中没有记录错误或警告

"copyToOutput": {
    "include": [ "../Common.Includes/mysettings*.json" ] }
有什么想法被感激地接受了吗

谢谢


Donal

对我来说,
copyToOutput
设置很好(至少在Windows上的
dotnet 1.0.0-preview3-003171
中)。但是请注意,这意味着如果文件在项目A中复制,它们将不会复制到引用项目A的项目B中的输出

另一种方法是使用底层文件系统并创建指向共享文件或文件夹的符号链接。在Linux上,它将是:

>ln-s../Common.Includes Common
Windows具有类似(但不太常用)的功能:

>mklink/J公共..\common.Includes
然后,您可以配置
dotnet
在特定事件上运行它:

“脚本”:{
“预编译”:“cmd/C mklink/J common..\\common.Includes”
}
在RC1中也有类似“准备”或“预还原”的事件,它们更适合于此,但目前和
dotnet
仅支持“预编译”和“后编译”

最好将此命令与一些逻辑一起放入单独的脚本中,以检查链接是否已经存在。在windows上,我将创建
init.ps1
Powershell脚本:

if(!(测试路径“公共”)){
cmd/C mklink/J“common”“..\common.Includes”
}
然后从“脚本”中引用它:

“脚本”:{
“预编译”:“init.ps1”
}

Hi qbik,感谢您抽出时间整理出这样一个深思熟虑的答案。我安装了Preview 2 Sdk和工具-我的版本是1.0.0-Preview 2-003121。我在VS2015内跑步。我的源代码管理系统是VSTS/TFS,从我所读到的内容来看,我认为符号链接和TFS不能完美地结合在一起。这样就可以通过脚本保留某种形式的复制过程。我可能会等到工具的第1个版本,看看它是否在那个版本中工作,如果不工作,就使用脚本方法。谢谢Donal@DonalMcWeeney:
copyToOutput
也适用于
1.0.0-preview2-003121
(我选中了)。但是请注意,这些文件将被复制到bin/Debug/netcoreapp1.0目录(或类似的目录,具体取决于项目设置),因此您不会在VS中看到它们。使用脚本方法时:我建议在版本控制中将符号链接(上面答案中的公共目录)添加到忽略的文件中,这样就不会签入(在git中,它将是.gitignore中的一个条目,我不知道如何)。这样可以避免VCS中的重复,并且它应该仍然可以在其他开发人员的机器上工作-符号链接将在构建时自动重新创建。