2010-01-05 14 views
7

Yaptığım bir sınıf kitaplığı projem var. Hadi buna ClassA diyelim. ClassA'da dll (ToolsDLL.dll) içinde bulunan bazı araçlara erişmem gerekiyor.Dll'leri birlikte paketleyebilir misiniz?

ClassA'da ProjectDLL.dll dosyasını projeye ekledim ve ToolsDLL.dll dosyasını Output To Output dizinine kopyaladım. Yani bu kütüphane iyi bir şekilde derler ve derler ve ClassA.dll ile birlikte ToolsDLL.dll

'u görürsem, bir uygulama yazmak istiyorum, ClassA'daki yöntemleri kullanan App_A. Yani, benim App_A projemde, onun ad alanına erişebilmem için ClassA.dll dosyasına bir referans ekledim. Her şey iyi ve güzel, inşa eder/derler.

App_A çalıştırdığımda ve ToolsDLL.dll dosyasının kullanılmasının gerektiği bir noktaya ulaştığında sorun, bir istisna atar "ToolsDLL.dll Yüklenemiyor. Bunun nasıl olabileceğini anlamıyorum." Bu dll bulamıyorum çünkü ClassA.dll ile aynı dizinde. AppLink.dll App_A çıktı dizinine koyarsanız, bu iyi bir iş var mı? ToolsDll.dll bir şekilde ClassA.dll ile herhangi bir şekilde olabilir herhangi bir şekilde.Onların müşterilerim kendi uygulamaları AppA benzer yazma olacak ve onlar sadece kendi projelerinde bir dosya başvurmak zorunda kaldı ve güzel olurdu

cevap

12

Microsoft'tan ILMerge adlı bir araç var. Muhtemelen istediğinizi yapacak, birkaç derlemeyi tek bir dosyada bir araya getirecek.

P.S.: Sorununuza bir başka, oldukça sık kullanılan bir çözüm, uygulamanızın gerekli dizini ToolsDLL.dll çıktı dizinine kopyalayan bir çözüm oluşturma olayı eklemek olabilir. hat boyunca bir şey:

xcopy /y /d $(SolutionDir)\lib\ToolsDLL.dll $(OutputDir)\ToolsDLL.dll 

(. Bir kısmını yanlış alırsanız Üzgünüm, bellekten bu yazarak kulüpler) Tabii

, müşteri de bunu yapmak zorunda kalacaktı. Ama yine de daha önce bunu daha önce yapmışlar.

+0

ILMerge yalnızca bir .Net derlemeler üzerinde kullanılabilir gibi görünüyor. Bu doğru mu. Benim durumumda, ToolsDLL.dll bir çip üretimi tarafından bana verildi. Bir .net derlemesi olup olmadığını bilmiyorum. Bu önemli mi? – PICyourBrain

+0

Evet, yalnızca .NET derlemeleri için çalıştığına inanıyorum. Ne tür bir .dll dosyası olduğunu anlamak için belki de kullanabilirsiniz.NET SDK yardımcı programı 'ildasm',' .dll' denemek ve sökmeye. Bir .NET derlemesi ise, bu işe yaramalı; yerel kod içeriyorsa, ildasm başarısız olmalıdır. – stakx

+0

ToolsDll.dll dosyasına gidersem Visual Studio'da fark ettim -> Özellikler Action adında bir özellik var. Bunu Gömülü Kaynak olarak ayarlayabilir miyim? – PICyourBrain

1

Projeye DLL'yi eklediniz ya da gerçekten bir başvuru eklediniz mi? İkincisini yapmalısın, o zaman bu tür şeyler senin için otomatik olarak halledilir. Asıl dosyayı proje dosyalarına eklediğinize ve kopyalamaya ayarladığınıza benziyor. kesinlikle tek bir dosya yaklaşımı istemek yoksa

sonra tek bir DLL içine montajlar birleştirmek için ILMerge kullanabilirsiniz besbelli ILMerge başkalarının önerilerini ...

0

Bir IL birleştirme aracı kullanmak veya GAC'DE ToolsDLL.dll yükleyebilir ya.

Ayrıca App_A çıktısına bakarsanız, ClassA.dll zaten var, ToolsDLL.dll dosyasını arıyor.

İlgili konular