5

C# 'da bir kütüphane geliştirdik ve şimdi kütüphaneyi doğru şekilde kullanmaya yardımcı olacak bir proje şablonu oluşturmak istiyorum.Bir proje şablonunda kendi derlemlerime referans eklemenin en iyi yolu nedir?

Ben yeni projeler kütüphane derlemesine dahil etmek istiyoruz ama GAC ​​derleme dağıtmak ya da bazı belirli bir yerde ikamet eden montaj bağlıdır zorunda olmamayı tercih ederim.

Ne düşündüğüm proje şablonunun .zip dosyasına .dll eklemektir. Bu, yeni projelerin proje klasörünün içinde bir yerde sona ereceği anlamına gelir. Belki de Lib adlı bir klasörde. Daha sonra proje dosyasındaki referans ipucu bu klasöre işaret edebilir. Bu iyi bir fikir mi? Yolda ne gibi sorunlarla karşılaşabilirim?

belki farkında değilim proje şablonları böyle 3. parti kütüphaneleri dahil olmak üzere bazı mekanizma var mı? Bunu nasıl çözdün? Elbette ilk ben değilim.

+0

Yanıt, şablonlarınızı nasıl dağıtmayı planladığınıza bağlı olarak değişir. VSIX kullanıyor musunuz? MSI (Windows Installer) veya diğer genel amaçlı dağıtım teknolojisini mi kullanıyorsunuz? Sadece zip dosyasını dağıtmayı ve manuel yükleme talimatlarını vermeyi planlıyor musunuz? –

cevap

3

Geçmişte bu sorunu çözmek zorunda kaldım. Bir durumda, GAC'a yüklenmiş olan bir referans kitaplığıydı, bu da Referans öğesinin yalnızca montaj ismine ihtiyacı olduğunu gösteriyordu. Başka bir durumda, kütüphaneyi dosya sistemine yükledik, konumu içeren bir kayıt defteri anahtarı oluşturduk (kullanıcının sevimli olması ve yükleme konumunu değiştirmemiz durumunda) ve kayıt defteri anahtarını aramak ve bir yedeği doldurmak için project template wizard kullanıldı. Öğenin, Reference'ın İpucuPathında doğru konuma sahip olması. (Not: şablonu sihirbazı yaklaşım engellemeye çalışıyoruz gibi geliyor GAC, sizin büyücünün montaj yüklemenizi gerektirir ...)

Eğer kütüphane birinde kurulacak istemiyorsanız GAC ya da belirli bir yer, projeye montajı dahil etme yaklaşımı, hemen hemen geriye kalan tek seçeneğinizdir. Olumlu tarafta, proje şablonunuzun dağıtımı oldukça basittir ve GAC, özel sihirbazlar vb. Ile uğraşmak zorunda kalmazsınız. Negatif tarafta, eğer kütüphanenizin yeni bir revizyonunu oluşturursanız, kullanıcılarınızın ihtiyacı olacaktır. Her projenin kütüphanenin kopyasını güncellemek.

+0

GAC'ye kurulumun etkileri nelerdir? Bunu önlemek için nedenleri nelerdir? –

+1

Birincil anlamı, GAC'ye yüklenen derlemin kopyasının "kazanır" olmasıdır. Yani, uygulamanızın klasöründe güncellenmiş bir kopyanız olabilir, ancak güçlü ad eşleştiği sürece, çalışma zamanı kopyayı GAC'den tercihli olarak yükleyecektir. Yaklaşık olarak benzer bir örnek, GAC tarafından oluşturulan grubun yolunun PATH değişkeninizdeki ilk giriş olması ve bir LoadLibrary çağrısı vermiş olmanızdır. Bu, ikili dosyalarınızı güncellemeye çalıştığınızda garip davranışlara yol açabilir ve gizemli davranışlar değişmez. –

+1

Ayrıca, bu doğrudan bir GAC sorunu olmamasına rağmen, güçlü adlar kullanmak, derlemenizin derlenmiş olduğu güçlü adla eşleşen bir derleme gerektirdiğini gösterir; Bağlantıları yeniden yeni bir sürüme yönlendiren bir yayıncı ilkesini yeniden derlemeniz veya kaydetmeniz gerekir. –

İlgili konular