2017-03-14 48 views
19

TLDR ile 1.0.0 nedir?Paket sürümü daima dotnet paketi

ben project.json ile .NET Çekirdek proje için bir .NET 4.6.1 projesinden geçiş olduğunu, bir kütüphane var. (TFS 2015 vnext kullanarak) bu dönemde benim CI için, benim sürüm numarasını alacağı ve yeni sürümü ile project.json dosyasındaki sürüm numarasını değiştirin. dotnet pack komut sadece iyi versiyonu pick up ve güncellenmiş sürüm numarasına sahip yeni bir paket oluşturacak.

Geçen hafta TFS 2015 den TFS 2017 için çıkıyor yükseltilmiş, project.json güncelleştirilmiş .Csproj dosyası ile değiştirildi. CI'mı güncelledim. Benim CI sırasında - Ben şimdiki yapı için sürümüyle AssemblyVersion etiketi yerine benim /Properties/AssemblyInfo.cs dosyasını güncelleyin. Sonra çözümü yapıyorum - ki bu gayet iyi. Sonra çözümü paketliyorum.

Ancak AssemblyVersion ve AssemblyFileVersion rağmen doğru inşa numarasına AssemblyInfo.cs ayarlı - dotnet pack hala *.1.0.0.nupkg dosyaları .nupkg üretiyor.

Neyi eksik? Eğer dotnet pack kullandığınızda

dotnet pack $projectFile -o $currentDirectory 
+0

bu sadece ' değeri' mi? –

cevap

13

, sürüm (şimdi *.csproj önce project.json,) projesi tanımından çekilir değil AssemblyInfo.cs:

İşte benim paketi komuttur. Böylece, yeni iş akışınız project.json ile olana çok benzeyecek.

project.json to csproj migration docs'dan, VersionPrefix ve VersionSuffix özelliklerini kullanabilirsiniz.

Önce: Şimdi

{ 
    "version": "1.0.0-alpha-*" 
} 

:

<PropertyGroup> 
    <VersionPrefix>1.0.0</VersionPrefix> 
    <VersionSuffix>alpha</VersionSuffix> 
</PropertyGroup> 

Ayrıca tek Version özelliğini kullanabilirsiniz, ancak belgeler, bu "paketleme sırasında versiyon ayarları geçersiz kılınabilir" uyarısında bulunuyor. Daha iyi

<PropertyGroup> 
    <Version>1.0.0-alpha</Version> 
</PropertyGroup> 
+1

Sürüm önekini ve sürüm sonekini değiştirmek için derlemenin bir parçası olarak .csproj dosyasını yeniden yazmak için powershell kullanarak sona erdim. –

+1

@AlexanderMatusiak, powershell kodunu gönderebilmeniz için herhangi bir şansınız var mı?teşekkürler – mcintyre321

+3

, Bu eklemek için size dotnet paketi komutuna "/p:Version=1.0.0-alpha" gibi bir şey ekleyerek komut satırında VersionPrefix ve VersionSuffix (ya da sadece tek Versiyon özelliği) sağlayabilir. –

27

henüz /p:Version=$(Build.BuildNumber) dotnet paketi komuta (TFS/VSTS) ve Nuget paketinde belirtilen sürümüyle inşa edecek belirtin. Örnek (non TFS özel):

dotnet pack .\src\example\example.csproj -o c:\published\example -c Release /p:Version=1.2.3 

Örnek (TFS özel) < - bir powershell komut adımı kullanarak TFS 2017 ambalaj için bunu kullanın.

dotnet pack $(Build.SourcesDirectory)\src\example\example.csproj -o $(Build.ArtifactStagingDirectory)\Pack -c Release /p:Version=$(Build.BuildNumber) 

Not: paket referans sürümlerini güncelleştirmek etmez.

+4

- Eğer '* .csproj' dosyada herhangi' 'veya' 'değerlere sahip olmadığından emin olun. Aksi halde, bunlar komut satırında belirttiğiniz her şeyi geçersiz kılar. – trailmax

+0

Teşekkürler Edward. Aynı sonuca vardık internet arama yaptıktan sonra (Ben ci yapı aracılığıyla sürümünü ayarlamak istediğiniz). Bir Dev kendi kişisel PC'de inşa edilirse csproj varsayılan bir o kadar anlarım eklendi. Csproj'da sadece tanımlanmadıysa VersionSuffix'i ayarlamak için bir Durum kullandım. Sürüm tanımını geçersiz kılmadım. Bu sayede, sürüm sonunda "private. $ USERNAME" olacaktır. İşte tüm Yapı kaynak kodu https://github.com/dotnet/sdk/blob/94a3f2856cb09e66ee7472820b4e26fb576b4686/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.NET.DefaultAssemblyInfo.targets birlikte gider nasıl – ripvlan