Visual Studio chuyển dự án sang một thư mục khác


182

Làm cách nào để di chuyển một dự án sang một thư mục khác trong Visual Studio? Tôi đã quen với cấu trúc này trong các dự án của tôi.

-- app
---- Project.Something
---- Project.SomethingElse

Tôi muốn đổi tên toàn bộ không gian tên SomethingElse thành SomethingNew, cách tốt nhất để làm điều đó (mà không cần thủ công vào tệp .sln)?


Bạn có đang sử dụng TFS làm nhà cung cấp kiểm soát nguồn của mình không?
Bermo

Bạn có muốn đổi tên chỉ thư mục hoặc toàn bộ dự án?
Charles Gargent

Dự án, thư mục và không gian tên (s).
Egor Pavlikhin

Câu trả lời:


174

Xóa dự án khỏi giải pháp của bạn bằng cách nhấp chuột phải vào dự án trong cửa sổ Solution Explorer và chọn Xóa. Di chuyển toàn bộ thư mục dự án, bao gồm các thư mục con bất cứ nơi nào bạn muốn nó đi. Thêm dự án trở lại giải pháp của bạn.

Tên không gian tên là một cái gì đó hoàn toàn khác nhau, chỉ cần chỉnh sửa mã nguồn.


6
Đó là những gì tôi đã làm, nhưng tôi nghĩ có một cách để làm tất cả những điều đó mà không loại bỏ toàn bộ dự án, điều này khiến tôi sau đó thêm lại tất cả các phụ thuộc.
Egor Pavlikhin

31
Dỡ bỏ tất cả các dự án phụ thuộc khỏi giải pháp, trước khi loại bỏ dự án bạn muốn di chuyển. Bằng cách đó, họ không phát hiện loại bỏ và các tài liệu tham khảo dự án vẫn còn nguyên. Sau khi bạn di chuyển dự án và thêm lại vào giải pháp, bạn có thể tải lại các dự án phụ thuộc.
sở2

13
Đừng quên rằng việc xóa một tệp trong TFS, sau đó nhập lại vào TFS trong một vị trí hoặc dự án thư mục khác, khiến lịch sử thay đổi tệp bị xóa.
Paul

tôi muốn làm điều đó mà không làm mất lịch sử thay đổi vì vậy tôi vẫn có thể so sánh khi tôi muốn.
dùng734028

195

Tôi đã thử đề xuất để loại bỏ và thêm lại dự án, nhưng sau đó sửa chữa các phụ thuộc có thể là một nỗi đau.

Tôi sử dụng phương pháp này:

  1. Di chuyển thư mục dự án.
    • Nếu dự án nằm trong điều khiển nguồn, hãy di chuyển bằng các lệnh điều khiển nguồn.
  2. Chỉnh sửa tập tin giải pháp trong một trình soạn thảo văn bản. Chỉ nên có một con đường mà bạn cần thay đổi.

Chắc chắn dễ dàng hơn! Nhưng, sau khi tôi di chuyển và chỉnh sửa giải pháp bằng cách chỉnh sửa văn bản, tệp giải pháp hiển thị bên dưới giống như một tệp văn bản thông thường. Làm thế nào để tôi thoát khỏi điều này?
Abriel

2
"Nếu dự án nằm trong kiểm soát nguồn, hãy thực hiện di chuyển bằng các lệnh điều khiển nguồn." .. Bạn có thể giải thích làm thế nào để làm điều này?
Anish V

3
@AquerV Đối với kỳ thi, nếu bạn sử dụng Git, hãy nhập git mv ...thay vì mv .... Xem git-mvtài liệu để biết thêm.
cubuspl42

3
Trong tệp .csproj, bạn cần cập nhật thuộc tính SolutionDir, cũng như sửa tất cả các đường dẫn cho tham chiếu dự án và vị trí gói nuget. Trong tệp .sln, tất cả những gì bạn cần làm là cập nhật đường dẫn đến dự án.
Pete

Điều này đã làm việc cho tôi. 'Bí quyết' duy nhất là tôi đã phải thay đổi tệp .sln để nó không chỉ đọc để chỉnh sửa và sau đó đánh dấu nó là chỉ đọc một lần nữa cho mục đích an toàn.
JustWannaFly 4/2/2015

44
  1. Đóng giải pháp của bạn trong VS2012
  2. Di chuyển dự án của bạn đến vị trí mới
  3. Mở giải pháp của bạn
  4. Chọn dự án không tải được
  5. Trong cửa sổ công cụ Thuộc tính, có một đường dẫn Tệp Tệp có thể chỉnh sửa, mục nhập cho phép bạn chọn vị trí dự án mới
  6. Đặt đường dẫn mới
  7. Nhấp chuột phải vào dự án và nhấp tải lại

4
Điều này hoạt động rất tốt và dường như là cách nhanh nhất và dễ nhất, các câu trả lời được bình chọn cao hơn nhiều mặc dù. Có một bài viết về nó ở đây: msmvps.com/bloss/deborahk/archive/2010/06/30/ Kẻ
Mike Rosenblum

@MikeRosenblum Các liên kết bị hỏng, liên kết mới là blogs.msmvps.com/deborahk/...
Roi Gavish

1
Không hoạt động trong VS2012. Bài viết được liên kết cũng chỉ đề cập đến VS2010.
bassim

Làm việc tốt với tôi trong VS2010 bao gồm tất cả các tài liệu tham khảo của tôi ngoại trừ 1 mà tôi phải thêm lại.
Kristian

@Vasanth Trong Visual Studio 2019, bạn cần chỉnh sửa thủ công tệp .sln để định vị dự án; và có thể (có thể) tệp .csproj cũng tham chiếu vị trí chính xác của bất kỳ gói nuget nào.
Caltor

3

Những gì làm việc cho tôi là:

  1. Loại bỏ dự án khỏi giải pháp.
  2. Chỉnh sửa tập tin dự án với một trình soạn thảo văn bản.
  3. Cập nhật tất cả các đường dẫn tương đối vào "gói". Trong trường hợp của tôi, tôi đã phải thay đổi ..\packagesđể ..\..\..\packageskể từ khi tôi chuyển dự án vào một thư mục sâu hơn.
  4. Tải dự án trở lại vào giải pháp.

2

Tôi đã từng gặp vấn đề tương tự. Tôi đã giải quyết bằng cách di chuyển các tài liệu tham khảo và trong vòng chưa đầy 15 phút, mà không thay đổi các tài liệu tham khảo.

Đối với tôi giải pháp rất đơn giản:

  1. Di chuyển các tập tin của bạn, nơi bạn cần.
  2. Xóa thư mục có tên .vs. Phải là thư mục không nhìn thấy.
  3. Mở tệp giải pháp (.sln) bằng trình chỉnh sửa đơn giản như ghi chú hoặc notepad ++.
  4. Thay đổi tham chiếu nơi tệp của bạn, sử dụng cấu trúc sau: nếu bạn đặt dự án của mình vào cùng thư mục, hãy xóa thư mục trước đó hoặc tham chiếu ".. \"; nếu bạn đặt trong thư mục trên, hãy thêm tham chiếu ".. \" hoặc tên của thư mục.
  5. Lưu tập tin với những thay đổi.
  6. Mở tệp dự án (.csproj) và làm tương tự, xóa hoặc thêm tham chiếu.
  7. Lưu các thay đổi.
  8. Mở tệp giải pháp.

Ví dụ:

Trong tệp giải pháp (.sln)

  • Bản gốc: Dự án ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-8 } "Dự án (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," ED5 } "

    Mới: Dự án ( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 Dự án -A5D6933E2D7B} ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.DataService", " } "

Trong hồ sơ dự án:

  • Nguyên:

    Mới:

    Tham chiếu ban đầu: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Tham chiếu mới: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

Tóm tắt: đổi tên và di chuyển trong VS2019 với git, giữ lại lịch sử git, tận dụng R # một chút, cập nhật tham chiếu dự án phụ thuộc tự động (quan trọng đối với sln với nhiều dự án, chúng tôi có> 200)

Tôi đã sử dụng các bước sau để đổi tên các dự án C # trong Visual Studio 2019. Quá trình này sử dụng R # để điều chỉnh các không gian tên. Lịch sử git được giữ lại bằng cách thực hiện "git mv" (tránh thêm / xóa lịch sử thả).

Hai giai đoạn: 1) đổi tên dự án tại chỗ và 2) di chuyển dự án.

(Sử dụng tiền boa từ các dự án dỡ tải cơ sở2 .)

Đổi tên

  1. VS | Giải pháp thám hiểm | nhấp chuột phải vào dự án | Đổi tên (ví dụ: Utils.Foo thành Foo).
  2. VS | Giải pháp thám hiểm | nhấp chuột phải vào dự án | Thuộc tính | thay đổi tên lắp ráp, không gian tên mặc định và các trường thông tin hội
  3. Làm 1 và 2 cho dự án thử nghiệm tương ứng (ví dụ: Utils.Foo.Tests)
  4. VS | Giải pháp thám hiểm | nhấp chuột phải vào các dự án (sản xuất và thử nghiệm) | Tái cấu trúc | Điều chỉnh không gian tên
  5. Các tệp XAML sử dụng dự án có thể cần được cập nhật (thủ công hoặc với một tìm kiếm và thay thế toàn cầu phù hợp)
  6. Xây dựng lại tất cả
  7. Cam kết !! (để cam kết thay đổi trước khi di chuyển)

Lưu ý: Thư mục trong Windows Explorer vẫn giữ nguyên tên cũ cho đến thời điểm này (ví dụ: Utils.Foo). Điều này được cố định trong các bước di chuyển.

Di chuyển

Phương pháp này: 1) giữ lại lịch sử git, 2) tận dụng R # để điều chỉnh không gian tên nguyên tử và 3) cập nhật các dự án phụ thuộc en masse (tránh chỉnh sửa thủ công các tệp sln và csproj phụ thuộc).

  1. dỡ tất cả các dự án trong giải pháp (để loại bỏ dự án đích không kích hoạt các thay đổi trong các dự án phụ thuộc)

    VS | chọn tất cả các thư mục giải pháp trong Giải pháp | nhấn chuột phải vào Unload Project

  2. di chuyển các thư mục bằng git (để lịch sử được duy trì)

a) mở Dấu nhắc nhà phát triển cho năm 2019

b) trạng thái git (để minh họa không có gì để cam kết, làm việc sạch cây)

c) git mv dự án, ví dụ: git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

d) trạng thái git để xem / xác minh thay đổi

  1. loại bỏ dự án

VS | Giải pháp thám hiểm | chọn dự án | nhấp chuột phải | Xóa (vì tất cả các dự án được dỡ tải, điều này sẽ KHÔNG xóa các tham chiếu đến nó trong các dự án phụ thuộc)

  1. thêm lại dự án (vào vị trí mới trong cây trong Solution Explorer)

a) VS | Giải pháp thám hiểm | chọn thư mục mẹ | nhấp chuột phải | Thêm | Dự án hiện có

  1. tải lại tất cả các dự án

QUAN TRỌNG: Xác nhận rằng các tệp * .csproj cho các dự án phụ thuộc đã được cập nhật.

(VS | Team Explorer | Thay đổi | bấm đúp vào bất kỳ csproj phụ thuộc nào được liệt kê | kiểm tra xác minh thay đổi đường dẫn ProjectReference)

  1. Sửa thủ công các đường dẫn trong tệp di chuyển * .csproj

Sử dụng Notepad ++ (hoặc trình soạn thảo văn bản khác) để sửa đường dẫn. Thông thường, điều này có thể được thực hiện với một tìm kiếm và thay thế đơn giản (ví dụ: ../../../../ đến ../../).

Điều này sẽ cập nhật ...

a) Tài liệu tham khảo GlobalAssmeblyInfo.cs

b) đường dẫn đến các gói

c) đường dẫn đến tệp sơ đồ xác thực phụ thuộc

d) đường dẫn đến đường dẫn quy tắc (ví dụ <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>:)

  1. Đóng và mở lại giải pháp (để có được các tham chiếu dự án thành hình dạng tốt)

Lưu tất cả, Đóng giải pháp, tôi thích xóa các thư mục bin và obj để xóa lịch sử, Mở lại giải pháp

  1. Xác thực

a) VS | Đội thám hiểm | Thay đổi

i) sẽ thấy Thay đổi theo giai đoạn tiết lộ các tệp đã di chuyển ii) sẽ thấy các dự án phụ thuộc (* .csproj) được cập nhật độc đáo xem xét các khác biệt của csproj và lưu ý rằng các đường dẫn đã được cập nhật đẹp mắt !! (đây là phép thuật tránh việc cập nhật thủ công các tệp csproj bằng cách sử dụng trình soạn thảo văn bản)

b) trong Windows Explorer, xác minh vị trí cũ trống

c) Giải pháp sạch, Giải pháp xây dựng lại, Chạy thử nghiệm đơn vị, Khởi chạy ứng dụng trong sln.

  1. Cam kết !!

1

Thật dễ dàng trong VS2012; chỉ cần sử dụng tính năng ánh xạ thay đổi:

  1. Tạo thư mục mà bạn muốn giải pháp được chuyển đến.
  2. Đăng ký tất cả các tệp dự án của bạn (nếu bạn muốn giữ cho bạn thay đổi) hoặc khôi phục mọi tệp đã kiểm tra.
  3. Đóng giải pháp.
  4. Mở Trình điều khiển nguồn.
  5. Nhấp chuột phải vào giải pháp và chọn "Nâng cao -> Xóa ánh xạ ..."
  6. Thay đổi giá trị "Thư mục cục bộ" thành giá trị bạn đã tạo ở bước # 1.
  7. Chọn "Thay đổi".
  8. Mở giải pháp bằng cách bấm đúp vào nó trong trình thám hiểm kiểm soát nguồn.

2
Đó là, nếu bạn đang sử dụng TFS?
Martin Ba

1

trong comunity studio 2019, tôi đã làm những gì Victor David Francisco Enrique nói, nhưng chỉ cần xóa thư mục invvile .vs


0

Trong năm 2015

  1. Dỡ dự án của bạn trong trình khám phá giải pháp
  2. Tạo một giải pháp mới
  3. Sao chép các dự án vào thư mục của giải pháp mới
  4. Nhấp chuột phải vào giải pháp, thêm dự án hiện có.
  5. Nếu bạn sử dụng một số khung như MVC, bạn có thể cần thêm tham chiếu trong trình quản lý tham chiếu.

0

Tôi đã tìm ra điều này thử nó nó làm việc cho tôi.

Trong phiên bản cộng đồng visual studio 2017, nó tạo ra một dự án tại đường dẫn này "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" Điều này sẽ tạo ra quyền truy cập vào tệp bị từ chối

Bây giờ, bạn có thể sửa theo cách này.

đóng quá trình phòng thu hình ảnh của bạn. Sau đó, tìm dự án của bạn và sao chép thư mục dự án Nhưng, trước tiên hãy tạo một thư mục con Các dự án được đặt tên bên trong thư mục visual studio 2017 của bạn trong các tài liệu. Tiếp theo, dán thư mục dự án bên trong thư mục Dự án hình ảnh 2017 của bạn chứ không phải thư mục chính của phòng thu trực quan 2017 mà nó sẽ đi vào thư mục con có tên là Dự án. Tiếp theo, khởi động lại Visual studio 2017 Sau đó, chọn Open project Solution Sau đó, tìm dự án bạn đã dán trong thư mục Visual studio 2017 Project Sau đó dọn sạch Project và xây dựng lại nó, Nó, nên xây dựng và biên dịch tốt. Hy vọng, điều này đã giúp bất cứ ai khác. Không chắc chắn lý do tại sao Microsoft nghĩ rằng việc xây dựng các dự án của bạn theo một con đường nơi nó cần quyền ghi là vượt quá tôi.


0

Tôi muốn các thay đổi trong Git được hiển thị dưới dạng di chuyển / đổi tên thay vì xóa và thêm. Vì vậy, tôi đã làm một kết hợp của ở trên và bài này .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

Và điều chỉnh đường dẫn của các dự án và của các cụm từ Pkg của nuget trong tệp sln thông qua trình soạn thảo văn bản.


0
  1. Sao chép thư mục dự án đến đích mới
  2. Xóa dự án của bạn khỏi giải pháp (Nhấp chuột phải vào dự án trong "Solution Explorer" và chọn "Xóa")
  3. Sau đó thêm dự án hiện tại vào giải pháp (Nhấp chuột phải vào dự án trong "Solution Explorer" và chọn "Thêm" rồi "Dự án hiện tại")
  4. Thay đổi đường dẫn đến thư mục "gói" trong tệp "YourProjectName.csproj" (Mở trong notepad và thay đổi đường dẫn cho các gói được liên kết)

0

Điều này làm việc cho tôi vb2019. Tôi đã sao chép thư mục dự án nguồn của tôi. Sau đó tôi dán dự án, và đổi tên thư mục thành bất cứ điều gì. Để phá vỡ các mối quan hệ trở lại thư mục dự án nguồn, tôi tạm thời đổi tên thư mục nguồn. Tôi đã mở dự án đích của tôi. Đường dẫn đến các biểu mẫu và mô-đun đã được phát hiện lại trong thư mục cục bộ. Tôi đã xem qua tất cả các biểu mẫu và mô-đun của mình để đảm bảo chúng hoạt động. Tôi đã chạy dự án. Tôi đã đóng cửa dự án. Tôi đã đổi tên thư mục dự án nguồn trở lại không phải là tên gốc. Tôi có thể mở cả hai dự án cùng một lúc mà không có lỗi.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.