在 VS 2015 中,我们曾经能够在 global.json 中指定本地路径,如下所示:
{
“projects”: [ “src”, “test”, “C:\\path\\to\\other\\projects” ]
}
然后,它将将该路径中的所有项目添加到当前解决方案中,使我们能够轻松地从现有项目中引用它们。
现在 VS 2017 已将其模型更改为使用 csproj,并在此过程中摆脱了 project.json 和 global.json,有人知道有什么办法吗?
我得到的最好的结果是手动将其他项目一一包含到解决方案中。然后,在所有需要引用它的现有项目中,我必须编辑它们的 csproj 以包含它们。与之前仅在一个位置包含文件路径的方法相比,这确实很麻烦。
感谢您对此的任何帮助。
好吧,伙计们,现在已经是五月份了,我们仍然没有得到微软的官方解决方案。我使用 Powershell 和新的 .NET core CLI 得到了一些东西。 dotnet.exe 中已经内置了用于在项目中添加/删除解决方案的命令,因此这就是我的想法。
包含.json
{
"Includes": [
"C:\\projects\\SomeProjectA\\src",
"C:\\git\\SomeProjectB\\src"
]
}
添加包含.ps1
echo "Beginning import of projects in Includes.json"
$JsonIncludes = (Get-Content -Raw -Path "Includes.json") | ConvertFrom-Json
$IncludePaths = $JsonIncludes.Includes;
foreach ($IncludePath in $IncludePaths) {
$ProjectFiles = Get-ChildItem ($IncludePath + "\*") `
-Include *.csproj `
-Recurse `
| % {$_.FullName }
foreach ($ProjectFile in $ProjectFiles) {
dotnet sln add $ProjectFile
}
}
删除-包含.ps1
echo "Beginning removal of projects in Includes.json"
$JsonIncludes = (Get-Content -Raw -Path "Includes.json") | ConvertFrom-Json
$IncludePaths = $JsonIncludes.Includes;
foreach ($IncludePath in $IncludePaths) {
$ProjectFiles = Get-ChildItem ($IncludePath + "\*") `
-Include *.csproj `
-Recurse `
| % {$_.FullName }
foreach ($ProjectFile in $ProjectFiles) {
dotnet sln remove $ProjectFile
}
}
与使用旧的 Global.json 文件相比,这需要几个额外的步骤,但它可以满足我们的需要。为了使其真正方便,请添加一个解决方案文件夹并包含 Includes.json,以便您可以在 Visual Studio 中轻松修改它。
一些注意事项:
- 添加/删除脚本几乎完全相同,唯一的区别是 dotnet sln 添加/删除命令。这或许可以被清理成一个交互式脚本。
- 您还可以进行更改,这样您无需使用单独的添加/删除脚本,只需读取 Includes.json 并通过解析 .sln 文件将其与解决方案中当前的项目进行比较。
仅供思考。如果您想克隆/下载,这是存储库:https://github.com/rush Five/VS2017-包括
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)