Visual Studio: Göreli Derleme Referans Yolları


98

Çözüm dizininde bulunan bir derlemeye bir başvuru eklerken, onu göreceli olarak eklemenin herhangi bir yolu var mı, böylece bir havuza girip çıkarken projelerde doğru şekilde başvuruluyor mu?


13
Kullanıcı arayüzünden tam olarak çalışmazsa, .proj dosyasını doğrudan elle düzenleyebileceğinizi ve yolu göreceli olarak değiştirebileceğinizi unutmayın. Her iki şekilde de değiştirdiğinizde, sizin koyduğunuz gibi kalır.
Pavel Minaev

1
Visual Studio 2010'da referans yolları varsayılan olarak göreceli olarak depolanır, bu nedenle bu size oluyorsa başka bir şey yanlıştır. Benim durumumda, sürüm kontrolünden dll'leri tamamen görmezden geldim, böylece çözümü derleyebilirdim, ancak çalışma arkadaşlarım bunu yapamadı.
Giles Roberts

Yanıtlar:


125

Pavel Minaev'in orijinal yorumunu genişletmek gerekirse - Visual Studio için GUI, .sln dosyanızın göreceli referansın kökü olduğu varsayımıyla göreceli referansları destekler. Dolayısıyla, bir çözümünüz C:\myProj\myProj.slnvarsa, alt klasörlerine C:\myProj\eklediğiniz referanslar otomatik olarak göreceli referanslar olarak eklenir.

Ayrı bir dizine göreli bir referans eklemek C:/myReferences/myDLL.dlliçin aşağıdakileri yapın:

  1. Çözüm Gezgini'nde projeye sağ tıklayıp Başvuru Ekle ... seçeneğini belirleyerek başvuruyu Visual Studio GUI'ye ekleyin.
  2. Bu referansın bulunduğu * .csproj dosyasını bulun ve bir metin düzenleyicide açın
  3. <HintPath> öğesini şuna eşit olacak şekilde düzenleyin:

    <HintPath>..\..\myReferences\myDLL.dll</HintPath>

Bu şimdi referanslar C:\myReferences\myDLL.dll.

Bu yardımcı olur umarım.


21
Bunun yararlı ve doğru olduğunu anlıyorum, ancak VS gui cidden göreceli bir referans eklemek için bir yol sağlamıyor mu?
kdbanman

4
VS 2015'te bu davranışı varsayılan olarak aldım (göreceli yol)
Mugen

2
Meraktan sizin talimatlarınızı takip edene kadar mutlak bir yol eklediğine ikna oldum. VS, başvuru özelliklerinde mutlak bir yol gösterdi, ancak <HintPath> zaten göreceli olarak gösterdi. O_o lolimaderp dosyalarım eksikti!
donutguy640

@ donutguy640 Bu beni de karıştırdı. Ayrıca özellikler bölmesinde göreli yolu da göstermeleri gerekir
Alexander Derck

1
Proje dosyasını doğrudan düzenlemenize gerek yoktur. Başvuru ekle iletişim kutusunda "gözat" ı seçin, proje dosyanızın bulunduğu klasöre gidin ve ardından DLL dosyanızın ilgili yolunu ekleyin. Özellikler penceresinde mutlak bir yol görüntülenmesine rağmen, ilgili yol proje dosyasına kaydedilir. VS, gerçekten proje dosyasına kaydedildiği gibi yolu göstermelidir.
needfulthing

9

Evet, çözümünüzde lib / gibi bir dizin oluşturun ve ardından dll'nizi dosya sistemindeki o dizine ekleyin ve projeye ekleyin (Ekle-> Varolan Öğe-> vb.). Ardından projenize göre referansı ekleyin.

Bunu svn ve cvs altında birkaç kez yaptım.


5
Dll'yi projenin kendisine eklemenize gerek yok, sadece ona referans ekleyin. Yapılacak en iyi şey, 'lib' dizininin tamamını kaynak kontrolünüze eklemektir. Örnek olarak code.google.com/p/projectpilot/source/browse/#svn/trunk'a bakın
Igor Brejc

1
Haklısın. Eski bir projeyi kontrol ettim ve ne dizin ne de dll'ler projenin kendisine, sadece depoya eklendi. Ve referans, daha sonra projeye bağlıdır. Bunun için üzgünüm.
Freddy

4

VS 2017'de bu otomatiktir. Yani Add Referencegenelde olduğu gibi.

Belirtilmelidir ki, Reference Propertiesmutlak bir yol gösterilmiştir, ancak .vbproj/.csprojgöreceli kullanılır.

<Reference Include="NETnetworkmanager">
      <HintPath>..\..\libs\NETnetworkmanager.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>

2

Muhtemelen, bunu başarmanın en kolay yolu, referansı montaja eklemek ve ardından (manuel olarak) ilgili Visual Studio proje dosyasındaki (.csproj uzantısı) referansın metin gösterimini göreceli hale gelecek şekilde yamalamaktır.

Bunu VS 2005'te birçok kez sorunsuz bir şekilde yaptım.


3
Proje dosyasını manuel olarak değiştirmenin gerekli olmadığını düşünüyorum. Deneyimlerime göre, Visual Studio her zaman göreli yolları kullanır. Proje dosyasını elle değiştirmek zorunda olduğum tek zaman, bir anahtar dosyası (.snk) paylaşmak istediğim zamandı. Visual Studio her zaman anahtar dosyasını proje dizinine kopyalar ve bu da anahtar dosyanın birkaç kopyasına neden olur.
Stefan Egli

1

Burada kapalı olabilirim, ancak cevabın oldukça açık olduğu görülüyor: Proje özelliklerindeki referans yollarına bakın. Kurulumumuzda ortak depo klasörümüzü ref yolu GUI penceresine ekledim, şöyle ki

VS20xx'deki Referans Yolları

Bu şekilde dll'lerimi (yayınlanmaya hazır) bu klasöre kopyalayabilirim ve artık her geliştirici bu klasörden her derlendiğinde güncellenmiş DLL'yi alır.

Çözümde dll bulunursa, kurucu yerel sürüme yayınlanan ekip sürümüne göre öncelik vermelidir.


Ne yazık ki bu csproj.user dosyasında tutulur ve göreceli değildir.
Jamie Kitson

0

Daha önce belirtildiği gibi, projenizin .csprojdosyasını manuel olarak uygulamak için manuel olarak düzenleyebilirsiniz.

Ayrıca Visual Studio 2013'ün, muhtemelen proje dosyasını daha taşınabilir hale getirme girişimi nedeniyle referans ipucu yoluna göreceli bir yol uygulamaya çalıştığını fark ettim.

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.