VS 2017通过filepath引用本地项目(比如在VS 2015中使用global.json)

Isa*_*Lee 6 c# visual-studio asp.net-core visual-studio-2017

在VS 2015中,我们曾经能够在global.json中指定本地路径,如下所示:

{
    “projects”: [ “src”, “test”, “C:\\path\\to\\other\\projects” ]
}
Run Code Online (Sandbox Code Playgroud)

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

现在VS 2017已经将其模型改为使用csproj,并在此过程中摆脱了project.json和global.json,有没有人知道这种方法?

我得到的最好的是将其他项目逐个手动地包含在解决方案中.然后,在所有需要引用它的现有项目中,我必须编辑它们的csproj以包含它们.与之前简单地在一个位置包含文件路径的方式相比,这非常麻烦.

感谢您的帮助.

Isa*_*Lee 2

好吧,伙计们,现在已经是五月份了,我们仍然没有得到微软的官方解决方案。我使用 Powershell 和新的 .NET core CLI 得到了一些东西。dotnet.exe 中已经内置了用于在项目中添加/删除解决方案的命令,因此这就是我的想法。

包含.json

{
    "Includes": [
        "C:\\projects\\SomeProjectA\\src",
        "C:\\git\\SomeProjectB\\src"
    ]
}
Run Code Online (Sandbox Code Playgroud)

添加包含.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
    }
}
Run Code Online (Sandbox Code Playgroud)

删除-包含.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
    }
}
Run Code Online (Sandbox Code Playgroud)

与使用旧的 Global.json 文件相比,这需要几个额外的步骤,但它可以满足我们的需要。为了使其真正方便,请添加一个解决方案文件夹并包含 Includes.json,以便您可以在 Visual Studio 中轻松修改它。

一些注意事项:

  • 添加/删除脚本几乎完全相同,唯一的区别是 dotnet sln 添加/删除命令。这或许可以被清理成一个交互式脚本。
  • 您还可以进行更改,这样您无需使用单独的添加/删除脚本,只需读取 Includes.json 并通过解析 .sln 文件将其与解决方案中当前的项目进行比较。

仅供思考。如果您想克隆/下载,这里是存储库:https://github.com/rush Five/ VS2017-Includes