2017-03-10 22 views
5

Trong VS 2015, chúng tôi sử dụng để có thể xác định một con đường địa phương trong global.json như vậy:VS 2017 tham khảo các dự án địa phương bằng cách filepath (như sử dụng global.json trong VS 2015)

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

Nó sẽ sau đó thêm tất cả các dự án từ đường dẫn đó vào giải pháp hiện tại, cho phép chúng tôi dễ dàng tham khảo chúng từ các dự án hiện có.

Bây giờ VS 2017 đã thay đổi 'mô hình sử dụng csproj và loại bỏ project.json và global.json trong quá trình này, có ai biết cách này không?

Điều tốt nhất tôi đã nhận là tự bao gồm các dự án khác, từng cái một, vào giải pháp. Sau đó, trong tất cả các dự án hiện có cần tham khảo nó, tôi sẽ phải chỉnh sửa csproj của họ để đưa chúng vào. Điều này thực sự cồng kềnh so với cách trước đó đơn giản bao gồm một filepath ở một địa điểm.

Cảm ơn bạn đã trợ giúp về điều này.

+0

Có thể trùng lặp với [.net core (csproj) global.json 'projects' tương đương] (http://stackoverflow.com/questions/42773815/net-core- csproj-global-json-projects-equivalent) – Set

Trả lời

0

Được rồi, tháng 5 và chúng tôi vẫn chưa có giải pháp chính thức từ Microsoft. Tôi có một cái gì đó làm việc bằng cách sử dụng Powershell và CLI lõi .NET mới. Đã có các lệnh được tích hợp vào dotnet.exe để thêm/xóa các giải pháp khỏi dự án, vì vậy, đây là những gì tôi đã đưa ra.

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 
    } 
} 

Remove-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 
    } 
} 

Đó là một vài bước bổ sung so với việc sử dụng tệp Global.json cũ, nhưng nó thực hiện những gì chúng ta cần. Để làm cho nó thực sự thuận tiện, thêm một thư mục giải pháp và bao gồm các Include.json để bạn có thể dễ dàng sửa đổi nó từ bên trong Visual Studio.

Một số lưu ý:

  • Add/Remove kịch bản gần như giống hệt nhau, sự khác biệt duy nhất là các sln DotNet thêm/gỡ bỏ lệnh. Điều này có thể được dọn sạch thành một kịch bản tương tác.
  • Bạn cũng có thể thay đổi mọi thứ để thay vì có tập lệnh thêm/xóa riêng biệt, bạn chỉ cần đọc Include.json và so sánh nó với những dự án hiện đang có trong giải pháp bằng cách phân tích cú pháp tệp .sln.

Chỉ cần thực phẩm để suy nghĩ. Đây là repo nếu bạn muốn sao chép/tải xuống: https://github.com/rushfive/VS2017-Includes

Các vấn đề liên quan