gpt4 book ai didi

c# - VS 2017 通过文件路径引用本地项目(如在 VS 2015 中使用 global.json)

转载 作者:太空狗 更新时间:2023-10-29 21:53:01 25 4
gpt4 key购买 nike

在 VS 2015 中,我们曾经能够像这样在 global.json 中指定本地路径:

{
“projects”: [ “src”, “test”, “C:\\path\\to\\other\\projects” ]
}

然后它会将该路径中的所有项目添加到当前解决方案,使我们能够轻松地从现有项目中引用它们。

现在 VS 2017 已将其模型更改为使用 csproj,并在此过程中摆脱了 project.json 和 global.json,有人知道解决这个问题的方法吗?

我得到的最好结果是手动将其他项目一个接一个地包含到解决方案中。然后,在所有需要引用它的现有项目中,我将不得不编辑它们的 csproj 以包含它们。与以前在一个位置简单地包含文件路径的方式相比,这确实很麻烦。

感谢您对此的任何帮助。

最佳答案

好吧,现在是五月了,我们仍然没有来自 Microsoft 的官方解决方案。我使用 Powershell 和新的 .NET 核心 CLI 进行了一些工作。 dotnet.exe 中已经内置了用于从项目中添加/删除解决方案的命令,所以这就是我想出的。

Includes.json

{
"Includes": [
"C:\\projects\\SomeProjectA\\src",
"C:\\git\\SomeProjectB\\src"
]
}

Add-Includes.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
}
}

删除-Includes.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 文件将其与解决方案中当前的项目进行比较。

仅供思考。如果您想克隆/下载,这里是 repo 协议(protocol):https://github.com/rushfive/VS2017-Includes

关于c# - VS 2017 通过文件路径引用本地项目(如在 VS 2015 中使用 global.json),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42723021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com