2011-05-17 15 views
16

Bir COM DLL dağıtmak için NuGet kullanmak mümkün mü?Can NuGet bir COM dll dağıtabilir mi?

Paketi nasıl kurarım?

DLL'yi Araçlar dizinine koyabildiğimi, ardından kitaplığı kaydetmek için bir sonradan yükleme komut dosyasını çalıştırabileceğimi düşünüyorum, ancak PowerShell'de çok iyi değilim.

Bunu nasıl yapacağınıza dair çevrimiçi örnekler var mı (mümkün ise)?

cevap

36

Benzer bir sorunla karşılaştığımda, aşağıdaki yapıya sahip bir NuGet paketi oluşturdum.

  • lib
    • MYCOMLib.dll
  • araçları
    • mycom.dll
    • install.ps1

MYCOMLib.dll, mycom.dll dosyasından Type Library Importer (tlbimp.exe) ile oluşturulan bir birlikte çalışma DLL dosyasıdır. Bu sadece komutla yapılır:

Tlbimp mycom.dll 

install.ps1 aşağıdaki kodu içerir:

param($installPath, $toolsPath, $package, $project) 

regsvr32 Join-Path $toolsPath '\mycom.dll' /s 

$project.Object.References | Where-Object { $_.Name -eq "MYCOMLib" } | ForEach-Object { $_.EmbedInteropTypes = $false } 

Bu kodun yaptığı o COM dll kaydeder ve üzerinde EmbedInteropTypes özelliğini ayarlar .NET 4. kullanıldığında gerekli olan false başvurusu. Daha fazla bilgi için bkz. Interop type cannot be embedded.

+0

Keşke cevabını da kabul edebilirdim. Bu gerçekten yardımcı oldu. –

+0

Belki de sormak için aptalca bir soru, ancak etkili olması için otomatik olarak install.ps1 PS komut dosyasını çalıştırmam gerekir mi yoksa otomatik olarak NuGet yükleme işlemi tarafından mı çalıştırılmalı? –

+1

@WillMarcouiller nuget, install.ps1 dosyasını nupkg'unuzdaki bir araç klasörüne yerleştirirseniz, yükleme işlemi sırasında çalıştırır. –

İlgili konular