Visual Studio projeyi farklı bir klasöre taşıma


182

Bir projeyi Visual Studio'da farklı bir klasöre nasıl taşıyabilirim? Projelerimde bu yapıya alışkınım.

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

Tüm ad alanını SomethingElse SomethingNew olarak yeniden adlandırmak istiyorum, (el ile .sln dosyasına girmeden) bunu yapmanın en iyi yolu nedir?


TFS'yi kaynak kontrol sağlayıcınız olarak mı kullanıyorsunuz?
Bermo

Yalnızca klasörü veya tüm projeyi yeniden adlandırmak ister misiniz?
Charles Gargent

Proje, klasör ve ad alanları.
Egor Pavlikhin

Yanıtlar:


175

Çözüm Gezgini penceresinde sağ tıklatıp Kaldır'ı seçerek projeyi çözümünüzden kaldırın. Alt klasörler de dahil olmak üzere tüm proje klasörünü gitmesini istediğiniz yere taşıyın. Projeyi çözümünüze ekleyin.

Ad alanı adları tamamen farklı bir şeydir, sadece kaynak kodunu düzenleyin.


6
Ben de öyle yaptım, ama tüm projeyi kaldırmadan tüm bunları yapmanın bir yolu olduğunu düşündüm.
Egor Pavlikhin

31
Taşımak istediğiniz projeyi kaldırmadan önce tüm bağımlı projeleri çözümden kaldırın. Bu şekilde, kaldırmayı algılamazlar ve proje referansları bozulmadan kalır. Projeyi taşıdıktan ve tekrar çözüme ekledikten sonra, bağımlı projeleri tekrar yükleyebilirsiniz.
temel2

13
TFS'de bir dosyayı silmenin ve daha sonra başka bir dizin konumundaki veya projedeki TFS'ye yeniden aktarmanın dosya değişiklik geçmişinin silinmesine neden olduğunu unutmayın.
Paul

i hala yapmak istediğinizde karşılaştırmalar yapabilirsiniz böylece değişikliklerin tarihini kaybetmeden yapmak istiyorum.
user734028

197

Projeyi kaldırmak ve yeniden eklemek için öneriyi denedim, ancak daha sonra bağımlılıkları düzeltmek bir acı olabilir.

Bu yaklaşımı kullanıyorum:

  1. Proje klasörünü taşıyın.
    • Proje kaynak denetimindeyse, kaynak denetim komutlarını kullanarak taşıyın.
  2. Çözüm dosyasını bir metin düzenleyicisinde düzenleyin. Değiştirmeniz gereken tek bir yol olmalıdır.

Kesinlikle daha kolay! Ancak, metin düzenlemesini kullanarak çözümü taşıdıktan ve düzenledikten sonra, çözüm dosyası normal bir metin dosyası gibi aşağıda gösterilir. Bundan nasıl kurtulurum?
Abriel

2
"Proje kaynak denetimindeyse, kaynak denetim komutlarını kullanarak taşıyın." .. Bunu nasıl yapacağınızı açıklayabilir misiniz?
Anish V

3
@AnishV Sınav için Git kullanıyorsanız, git mv ...yerine yazın mv .... Daha git-mvfazla bilgi için belgelere bakın .
cubuspl42

3
.Csproj dosyasında, SolutionDir özelliğini güncellemeniz ve proje başvuruları ve nuget paketi konumları için tüm yolları düzeltmeniz gerekir. .Sln dosyasında tek yapmanız gereken projenin yolunu güncellemektir.
Pete

Bu benim için çalıştı. Tek 'hile' .sln dosyasını değiştirmek zorunda kaldım, bu yüzden düzenlemek için salt okunur değildi ve daha sonra güvenlik amacıyla tekrar salt okunur olarak işaretledim.
JustWannaFly

44
  1. VS2012'de çözümünüzü kapatın
  2. Projenizi yeni bir yere taşıyın
  3. Çözümünüzü açın
  4. Yüklenemeyen projeyi seçin
  5. Özellikler aracı penceresinde, yeni proje konumunu seçmenizi sağlayan düzenlenebilir bir “Dosya yolu” girişi vardır
  6. Yeni yolu ayarla
  7. Projeye sağ tıklayın ve yeniden yükle'ye tıklayın

4
Bu son derece iyi çalışıyor ve en hızlı ve en kolay yol gibi görünüyordu, diğer çok daha yüksek oylanan cevaplar buna rağmen. Burada bir makale var: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum

@MikeRosenblum Bağlantı koptu, yeni bağlantı blogs.msmvps.com/deborahk/…
Roi Gavish

1
VS2012'de çalışmaz. Bağlantılı makalede ayrıca sadece VS2010'dan bahsedilmektedir.
bassim

Ben yeniden eklemek zorunda 1 hariç tüm referanslarımı dahil VS2010 benim için iyi çalıştı.
Kristian

@Vasanth Visual Studio 2019'da projeyi bulmak için .sln dosyasını el ile düzenlemeniz gerekir; ve muhtemelen (muhtemelen) .csproj dosyasını da herhangi bir nuget paketinin doğru konumunu gösterecek şekilde.
Caltor

3

Benim için işe yarayan:

  1. Projeyi çözümden kaldırın.
  2. Proje dosyasını bir metin düzenleyicisiyle düzenleyin.
  3. Tüm göreli yolları "paketler" e güncelleyin. Benim durumumda ben değiştirmek zorunda ..\packagesiçin ..\..\..\packagesben daha derin bir klasöre projeyi taşındığından beri.
  4. Projeyi tekrar çözüme yükleyin.

2

Ben de aynı problemi yaşadım. Referansları değiştirmeden 15 dakikadan daha kısa sürede referansları taşıdım.

Benim için çözüm basitti:

  1. Dosyalarınızı istediğiniz yere taşıyın.
  2. .Vs isimli klasörü silin. Görünür klasör olmamalıdır.
  3. Note veya notepad ++ gibi basit bir düzenleyici kullanarak çözüm dosyasını (.sln) açın.
  4. Aşağıdaki yapıyı kullanarak dosyanızın olduğu başvuruyu değiştirin: Projenizi aynı klasöre koyarsanız, önceki klasörü veya ".. \" başvurusunu kaldırın; yukarıdaki bir klasöre koyarsanız, ".. \" referansını veya klasörün adını ekleyin.
  5. Dosyayı değişikliklerle birlikte kaydedin.
  6. Proje dosyasını (.csproj) açın ve aynısını yapın, referansı kaldırın veya ekleyin.
  7. Değişiklikleri kaydedin.
  8. Çözüm dosyasını açın.

Örnekler:

Çözüm dosyasında (.sln)

  • Orijinal: Proje ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " TarayıcıPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B } "Proje (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," TarayıcıPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613-ADE5-B1-B1 }"

    Yeni: Proje ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Proje (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613 -4611-4613-4613-4613 }"

Proje dosyasında:

  • Orijinal:

    Yeni:

    Orijinal referans: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Yeni başvuru: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

Özet: git ile VS2019'da yeniden adlandırın ve taşıyın, git geçmişini koruyarak, R # biraz kaldırarak, otomatik bağımlı proje referans güncellemesi (birçok projeye sahip sln'ler için önemlidir,> 200'e sahibiz)

Visual Studio 2019'da C # projelerini yeniden adlandırmak ve taşımak için aşağıdaki adımları kullanıyorum. Bu işlem, ad alanlarını ayarlamak için R # kullanır. Git geçmişi bir "git mv" (geçmiş ekleme / silme düşüşünden kaçınarak) kullanılarak korunur.

İki aşama: 1) projeyi yerinde yeniden adlandırın ve 2) projeyi taşıyın.

( Base2 yeniden boşaltma projelerinin ipucunu kullanır .)

Adını değiştirmek

  1. VS | Çözüm Gezgini | sağ tıklama projesi | Yeniden adlandırın (örneğin, Utils.Foo'dan Foo'ya).
  2. VS | Çözüm Gezgini | sağ tıklama projesi | Özellikleri | montaj adını, varsayılan ad alanını ve Montaj Bilgisi alanlarını değiştirme
  3. Karşılık gelen test projesi için 1 ve 2 yapın (örn. Utils.Foo.Tests)
  4. VS | Çözüm Gezgini | sağ tıklama projeleri (üretim ve test) | Refactor | Ad Alanlarını Ayarlama
  5. Projeyi kullanan XAML dosyalarının güncellenmesi gerekebilir (manuel olarak veya uygun bir genel arama ve değiştirme ile)
  6. Tümünü Yeniden Oluştur
  7. Teslim Et !! (hamlelerden önce değişiklik yapmak)

Not: Windows Gezgini'ndeki klasör bu nokta için eski ad olarak kalır (örn. Utils.Foo). Bu, hareket adımlarında düzeltildi.

Hareket

Bu yöntem: 1) git geçmişini korur, 2) ad alanlarını atomik olarak ayarlamak için R # kullanır ve 3) bağımlı projeleri toplu olarak günceller (bağımlı sln ve csproj dosyalarının sıkıcı manuel düzenlemesini önler).

  1. çözümdeki tüm projeleri boşaltın (böylece hedef projenin kaldırılması bağımlı projelerde değişiklikleri tetiklemez)

    VS | Çözüm altındaki tüm çözüm klasörlerini seçin | Projeleri Kaldır'a sağ tıklayın

  2. git kullanarak klasörleri taşıma (böylece geçmiş korunur)

a) 2019 için Geliştirici Komut İstemi'ni aç

b) git durumu (“taahhüt edilecek hiçbir şey yok, ağaç temiz çalışıyor”)

c) projeye git mv, örneğin git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

d) Değişikliği görüntülemek / doğrulamak için git durumu

  1. projeyi kaldır

VS | Çözüm Gezgini | proje seç | sağ tıklama | Kaldır (tüm projeler kaldırıldığı için, bağımlı projelerde referansları doğru şekilde SİLMEZ)

  1. projeyi yeniden ekleyin (Solution Explorer'daki ağaçtaki yeni konuma)

a) VS | Çözüm Gezgini | hedef üst klasörü seç | sağ tıklama | Ekle | Mevcut Proje

  1. tüm projeleri yeniden yükle

ÖNEMLİ: Bağımlı projeler için * .csproj dosyalarının güncellendiğini doğrulayın.

(VS | Takım Gezgini | Değişiklikler | listelenen herhangi bir bağımlı csproj'a çift tıklayın | ProjectReference yolu değişikliğini denetle-doğrula)

  1. Tek taşınan * .csproj dosyasındaki yolları el ile düzeltme

Yolları düzeltmek için Notepad ++ (veya başka bir metin düzenleyici) kullanın. Genellikle bu basit bir arama ve değiştirme ile yapılabilir (örneğin, ../../../../ ila ../../).

Bu güncellenecek ...

a) GlobalAssmeblyInfo.cs referansları

b) paket yolları

c) Bağımlılık Doğrulama diyagram dosyalarına giden yollar

d) kural kümesi yollarına giden yollar (ör. <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Çözümü kapatın ve yeniden açın (proje referanslarını iyi şekle sokmak için)

Tümünü Kaydet, Çözümü Kapat, bin ve obj klasörlerini geçmişten temizlemek için silmeyi tercih ediyorum, Çözümü Yeniden Aç

  1. Doğrulama

a) VS | Takım Gezgini | değişiklikler

i) taşınan dosyaları ortaya Kademeli Değişiklikler görmelisiniz ii) güzel güncellenen bağımlı projeler (* .csproj) görmek gerekir csproj diffs gözden ve yolları güzelce güncellendiğini fark !! (Bu, bir metin düzenleyicisi kullanarak csproj dosyalarını zahmetli bir şekilde manuel olarak güncellemeyi önleyen sihirdir)

b) Windows Gezgini'nde eski konumun boş olduğunu doğrulayın

c) Temiz Çözüm, Çözümü Yeniden Oluştur, Birim testlerini çalıştır, Uygulamaları sln'de başlat.

  1. Teslim Et !!

1

VS2012'de kolaydır; harita değiştir özelliğini kullanmanız yeterlidir:

  1. Çözümün taşınmasını istediğiniz klasörü oluşturun.
  2. Tüm proje dosyalarınızı iade edin (değişikliklerinizi korumak istiyorsanız) veya teslim alınan tüm dosyaları geri alın.
  3. Çözümü kapatın.
  4. Kaynak Denetim Gezgini'ni açın.
  5. Çözümü sağ tıklayın ve "Gelişmiş -> Eşlemeyi Kaldır ..." seçeneğini belirleyin.
  6. "Yerel Klasör" değerini 1. adımda oluşturduğunuz değerle değiştirin.
  7. "Değiştir" i seçin.
  8. Çözümü, kaynak denetim gezgininde çift tıklatarak açın.

2
TFS mi kullanıyorsunuz?
Martin Ba

1

Visual Studio Comunity 2019'da Victor David Francisco Enrique'nin söylediklerini yaptım, ancak sadece .vs invisbile klasörünü silmek için gerekli


0

VS 2015'te

  1. Projenizi çözüm gezgininde boşaltın
  2. Yeni bir çözüm oluşturun
  3. Projeleri yeni çözümün klasörüne kopyalayın
  4. Çözümü sağ tıklayın, mevcut projeyi ekleyin.
  5. Gibi bir çerçeve kullanırsanız MVC, referansı başvuru yöneticisine eklemeniz gerekebilir.

0

Benim için çalıştığını bu denedim anladım.

Visual Studio 2017 topluluk sürümünde bu yolda bir proje oluşturur "C: \ Kullanıcılar \ mark \ source \ repos \ mipmaps \ mipmaps" Bu dosyaya erişim yaratacağı sorunu reddetti

Şimdi, bunu bu şekilde düzeltebilirsiniz.

görsel stüdyo sürecinizi kapatın. Ardından, projenizi bulun ve proje klasörünü kopyalayın Ancak, önce belgelerde visual studio 2017 klasörünüzün içinde bir Alt klasör Adlandırılmış Projeler yapın. Ardından, proje klasörünü Visual Studio 2017 Project klasörünüze yapıştırın, ana visual studio 2017 klasörüne değil, Projects adlı alt klasöre yapıştırın. Ardından, Visual studio 2017'yi yeniden başlatın Ardından, Open Project Solution'ı seçin. Ardından, visual studio 2017 Projects klasörünüze yapıştırdığınız projenizi bulun Daha sonra Projeyi temizleyin ve yeniden oluşturun, It, derlemeli ve iyi derlenmelidir. Umarım bu herkese yardımcı olmuştur. Microsoft'un projelerinizi neden yazma iznine ihtiyaç duyduğu bir yolda oluşturmayı düşündüğünden emin değilim.


0

Git'teki değişikliklerin silme ve ekleme işlemleri yerine hamle / yeniden adlandırma olarak gösterilmesini istedim. Ben yukarıda ve bunun bir combo yaptım Yani yazı .

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

Ve bir metin editörü aracılığıyla sln dosyasındaki nuget Pkg'lardan projelerin ve montajların yollarını ayarlayın.


0
  1. Proje klasörünü yeni hedefe kopyalayın
  2. Projenizi çözümden kaldırın ("Çözüm Gezgini" nde projeyi sağ tıklayın ve "Kaldır" ı seçin)
  3. Ardından mevcut projeyi çözüme ekleyin ("Çözüm Gezgini" nde projeyi sağ tıklayın ve "Ekle" yi ve ardından "Mevcut proje" yi seçin)
  4. "SizinProjeAdınız.csproj" dosyasındaki "paket" klasörünün yolunu değiştirin (Not defterinde açın ve bağlı paketler için yolları değiştirin)

0

Bu benim için çalıştı vb2019. Kaynak proje klasörümü kopyaladım. Daha sonra projeyi yapıştırdım ve klasörü yeniden adlandırdım. Bağları kaynak proje klasörüne geri döndürmek için kaynak klasörü geçici olarak yeniden adlandırdım. Hedef projemi açtım. Formlara ve modüllere giden yollar yerel klasörde yeniden keşfedildi. Çalıştığından emin olmak için tüm formlarımı ve modüllerimi inceledim. Projeyi ben yürüttüm. Projeyi kapattım. Kaynak proje klasörünü orijinal adı değil olarak yeniden adlandırdım. Her iki projeyi de aynı anda hatasız açabiliyorum.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.