2017-03-10 35 views
5

在2015年VS,我们以前可以在global.json指定本地路径,像这样:VS参考2017年地方项目由文件路径(如在2015年VS使用global.json)

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

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

既然VS 2017已将其模型更改为使用csproj,并且在此过程中删除了project.json和global.json,是否有人知道这种方法?

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

感谢您的任何帮助。

+0

可能重复[.net核心(csproj)global.json'项目'等效](http://stackoverflow.com/questions/42773815/net-core-的csproj-全球JSON-项目等效) – Set

回答

0

好的家伙,这是五月,我们还没有从微软的正式解决方案。我有一些使用Powershell和新的.NET核心CLI的工作。 dotnet.exe中已经有了一些命令来添加/删除项目中的解决方案,所以这就是我想出的。

Includes.json

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

附加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文件将其与目前解决方案中的项目进行比较。

只是想一想。这是回购,如果你想克隆/下载:https://github.com/rushfive/VS2017-Includes