2008-09-24 11 views
8

P/Invoke kullanarak projemden .NET dışı bir dll çağrısı yapıyorum, yani .dll dosyasının her zaman .exe dizininde bulunması gerekir.Visual Studio'da bir non.NET bağımlılığı belirtme

Visual Studio'ya bu bağımlılıktan bahsetmenin herhangi bir yolu var mı? Böylece, derleme sırasında .dll otomatik olarak çıktı dizinine kopyalanacak ve otomatik olarak .dll dosyasına eklenecek mi? Yoksa bunu elle yapmak zorunda mıyım?

cevap

5

Bu dosya (lar) projeye kopyalanabilir/bağlanabilir ve "Yapılandırma" yı "Hiçbiri" ve "Kopyalama Dizini'ne Kopyala" olarak ayarlanmış pencereleri "Daha yeni kopyala" veya "Her zaman kopyala" olarak ayarlayabilirsiniz. Ya da herhangi bir toplu komut dosyasını belirtebileceğiniz bir "Önceden Oluşturulmuş Olaylar" & "Oluşturma Sonrası Etkinlikler" i kullanabilirsiniz veya.

İkinci seçeneği tercih ediyorum, çünkü bu yol ilkinden daha esnektir. Ayrıca, bir MSBuild dosyasını değiştirebilir ve dosyaları kopyalamak için bir görev ekleyebilirsiniz.

+0

Teşekkürler, ilk seçeneğim yaptığım şeydi - daha iyi bir yol olup olmadığını merak ettim – Grokys

8

.DLL'yi projenize kolayca ekleyebilirsiniz.

bu dosya için Properties bölmesini seçip Copy if newer için Content ve Copy to Output Directory için Build Action ayarlayın.

+0

Build Action = "İçerik", Build Action'dan daha iyidir = "Hiçbiri", başka bir yanıtta önerilir. Bunun nedeni, bir "Setup" projesinde "İçerik" dosyalarını kolayca içerebilmenizdir. – Joe

+0

Evet, ve tam da bu yüzden cevabımda bunu önerdim. –

+0

> bu yüzden yanıtımı olarak önerdim ve neden cevap verdiğimi tahmin ettim :) – Joe

2

Projeye bir .DLL ekleyerek bir sorun olduğunu düşünüyorum, hata ayıklama ve serbest bırakma sürümleri için bir DLL'nin farklı sürümlerine gereksinim duyabilirsiniz. DLL dosyasının hem hata ayıklamasını hem de sürümlerini dosyaya ekleyebileceğinizi ve yapılandırmalara dayanarak, uygunsuz olanı hariç tutabileceğinizi düşünebilirsiniz, ancak bunu yapmanın bir yolunu bulamadım. Visual Studio 2010 kullanıyorum. Bu eski günlerde VS6 ile çalıştım.

+0

.csproj dosyasını elle düzenleyebilirsiniz DLL içerik düğümüne bir koşul eklemek için : < Include = "MyDLL.Release.dll" Koşul = "'$ (Yapılandırma) | $ (Platform)' == 'Sürüm | AnyCPU'" /> Alternatif olarak, MyDLL'i kopyalamak için bir ön oluşturma adımı kullanabilirsiniz. Geçerli yapılandırmaya bağlı olarak Debug.dll veya MyDLL.Release.dll MyDLL.dll. (Bunu Debug'dan Release'e geçerek VS'de Project properties sayfasından yapabilmelisiniz) – bruceboughton

+0

Burada yanıtladı http://stackoverflow.com/a/33436918/1889784 –