2016-03-14 10 views
5

NuGet 3.3+ 'nin yeni contentFiles elemanını bulabildiğim her şeyi okuduktan sonra, hala paketimde çalışmayı başaramıyorum. Hem net46 hem de uap10.0 hedeflerini içeren bir paketim var ve beklendiği gibi proje türü ve platform çalışması için doğru DLL'lerin seçimi. Ama aynı zamanda paket yüklemesi, tüm proje ve platformlar için bir CSV dosyası ve C# veya VB.Net için bir kod dosyası (buildAction="Compile" ile) projeye iki dosya eklemek istiyorum. İşte son .nuspec dosyasının kısaltılmış versiyonu:NuGet 3.3+: contentFiles projeye eklenmedi

<?xml version="1.0" encoding="utf-8" ?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata minClientVersion="3.3.0"> 
    ... 
    <contentFiles> 
     <files include="any\any\ErrorCodes.csv" buildAction="None" copyToOutput="false" /> 
     <files include="cs\any\Errors.cs.pp" buildAction="Compile" /> 
     <files include="vb\any\Errors.vb" buildAction="Compile" /> 
    </contentFiles> 
    </metadata> 
    <files> 
    <file src="contentFiles\any\any\ErrorCodes.csv" target="contentFiles\any\any\" /> 
    <file src="contentFiles\cs\any\Errors.cs.pp" target="contentFiles\cs\any\" /> 
    <file src="contentFiles\vb\any\Errors.vb" target="contentFiles\vb\any\" /> 
    ... 
    </files> 
</package> 

paket hatasız oluşturulur ve bunun Belirtilen dizin yapısı ile contentFiles klasöründe üç dosyayı içermiyor.

Ancak paketi yüklediğimde - hem bir Evrensel Uygulama (C# ve VB) hem de bir project.json dosyasını kullanmak üzere değiştirdiğim bir .NET 4.6 konsol uygulamasıyla denedim - DLL'ye başvuru eklenir, ancak içerik dosyaları proje yapısına ne eklenir ne de proje dizinine kopyalanmaz.

Herhangi bir girdi için minnettarım!

cevap

6

Tamam, ben contentFiles aslında çalışıyor, ancak beklediğim şekilde değil. Onun/onu contentFiles bulamadık herkes için kısa bir açıklama:

  • Nuget 3.3+ contentFiles değildir proje yapısına ekledi. Visual Studio'da görmezsiniz.
  • Bunun yerine, dosyalar projenin obj klasöründeki bir klasöre ayıklanır ve başvurulan (dosya kodsa). ContentFiles kod dosyalarınızdaki IntelliSense'te bulunan sınıfları veya yöntemleri bile göreceksiniz. Benim durumumda, projenin herhangi bir yerinde görünse de Errors sınıfına erişilebilir. çıkarılan dosyaların
  • yol aşağıdaki şema vardır: \ obj \ < ayıklama veya serbest bırakın > \ Nuget < \ bazı GUID > \ < Nuget paket adı > >

\ sürüm < \ değilim Bu yeni mekanizmayı beğendiğime eminim. Visual Studio'da göremediğim bazı görünmez kaynaklardan gelen kod (NuGet ile gönderilen bir kitaplık Referanslarda görülebilir, contentFiles tarafından getirilen herhangi bir kod yoktur) zaman zaman sorunlara neden olabilir. Visual Studio'da bir belirsizlik hatası aldığımda contentFiles mekanizmasının çalıştığını öğrendim çünkü NuGet paketindeki "görünmeyen" Errors.cs, projeye manuel olarak eklediğim "görünür" Errors.cs ile çarpıştı.

+0

Bu yeni mekanizmayı sevmiyorum - sürece daha fazla stres katıyor - ne olduğunu görmek zor – tofutim

+0

kafam karıştı, nuspec dosyanızı takip etmeye çalışıyorum ve görüyorum paketler dizinindeki contentFiles, hiçbir şey obj klasörüne gider. Bir şey mi eksik? – tofutim

+0

Projeyi derlemeye çalıştığınız oldu mu? Derleme sırasında dosyaların obj klasörüne kopyalandığını düşünüyorum. –