20 yıllık bir Üniversite Projesini dotnet-upgrade-asistant ile .NET 6’ya yükseltme

In: Genel


ben yazdım Minik Sanal İşletim Sistemi 2001’de (?) ve sonrasında üniversite için C#’da 300 seviyeli bir işletim sistemi sınıfı için 2002’de VB.NET’e taşıdı. Bunların hepsi .NET Core öncesi ve Windows’ta erken .NET 1.1 veya 2.0’da. ben 5 yıl önce GitHub’a taşıdı ve o sırada .NET Core 2.0’a taşıdı. Bu noktada 15 yaşındaydı, bu nedenle bu projenin Windows, Linux, Docker ve bir Raspberry Pi üzerinde çalıştığını görmek güzeldi… proje ilk yazıldığında var olmayan bir makine.

NOT: Zaman çizelgesi kafa karıştırıcıysa, bu noktada zaten yıllardır endüstride çalışıyordum ama hala 4 yıllık derecemde geceleri takılı kalıyordum. Lisansımı Yazılım Mühendisliği bölümünde tamamlamam sonunda 11 yıl sürdü.

Bu akşam, çocuklar uyurken, koşabilir miyim diye görmek istedim. .NET Yükseltme Yardımcısı şimdi 20 yıllık bu uygulamada ve .NET 6’da çalışmasını sağlayın.

Hadi başlayalım:

$ upgrade-assistant upgrade .TinyOS.sln
-----------------------------------------------------------------------------------------------------------------
Microsoft .NET Upgrade Assistant v0.3.256001+3c4e05c787f588e940fe73bfa78d7eedfe0190bd

We are interested in your feedback! Please use the following link to open a survey: https://aka.ms/DotNetUASurvey
-----------------------------------------------------------------------------------------------------------------

[22:58:01 INF] Loaded 5 extensions
[22:58:02 INF] Using MSBuild from C:Program Filesdotnetsdk6.0.100
[22:58:02 INF] Using Visual Studio install from C:Program FilesMicrosoft Visual Studio2022Preview [v17]
[22:58:06 INF] Initializing upgrade step Select an entrypoint
[22:58:07 INF] Setting entrypoint to only project in solution: C:UsersscottTinyOSsrcTinyOSCoreTinyOSCore.csproj
[22:58:07 INF] Recommending executable TFM net6.0 because the project builds to an executable
[22:58:07 INF] Initializing upgrade step Select project to upgrade
[22:58:07 INF] Recommending executable TFM net6.0 because the project builds to an executable
[22:58:07 INF] Recommending executable TFM net6.0 because the project builds to an executable
[22:58:07 INF] Initializing upgrade step Back up project

Renk istemleri ve bir dizi dinamik çoktan seçmeli soru ile sürecin komut satırında nasıl etkileşimli olduğunu görün.

Yükseltme yardımcısı ile .NET projesini güncelleme

İlginç bir şekilde, ilk denemede kurulur, hata yoktur.

.csproj dosyasına manuel olarak baktığımda, muhtemelen yıllar önce kullandığım .NET Core 2’nin pek de iyi olmayan sürümlerinden bazı garip sürüm numaraları görebiliyorum. Örümcek hislerim bunun yanlış olduğunu söylüyor ve yükseltme asistanının bunu anlamadığını varsayıyorum.

    <!-- <PackageReference Include="ILLink.Tasks" Version="0.1.4-preview-906439" /> -->
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.0-preview2-final" />

Ayrıca, Mono’s Linker’da uygulamaların son boyutunu küçültmek ve onları ağaçtan kırpmak için bir önizleme özelliği olan ILLink.Tasks’a yorumlanmış bir referans da not ediyorum. Bu işlevselliğin bir kısmı şimdi .NET 6’da yerleşiktir, dolayısıyla bunu daha sonra oluşturma ve paketleme işlemi sırasında kullanacağım. Referans bugün gerekli değildir.

Onları körü körüne .NET 6’ya yükselteceğim ve ne olacağını göreceğim. Bunu sadece sayıları değiştirerek ve geri yüklenip yüklenmediğini görerek yapabilirim, ama aynı zamanda deneyebilirim dotnet modası geçmiş bu, yükselticinin araç setinde güzel bir araç olmaya devam ediyor.

resim

Bu “modası geçmiş” araç, NuGet ile konuştuğu ve belirli paketlerin daha yeni sürümlerinin olduğunu doğruladığı için güzel.

Bu erken zamanda yalnızca toplu iş dosyaları olan testlerimde dotnet uygulamamı şöyle çağırıyordum:

dotnet netcoreapp2.0/TinyOSCore.dll 512 scott13.txt  

Bu sadece modern forma dönüşecek TinyOSCore.exe 512 scott13.txt bir exe ve args ve tören olmadan.

TinyOS’umu yayınlamak ve kırpmak sadece 15 meg’lik bir EXE’ye dönüşüyor. İhtiyacım olan .NET’in ayrı bir kurulum olmadan orada olduğunu düşünürsek güzel. Tamamen ekstra olmak istersem, bu küçük sentetik işletim sistemini bir mikro hizmete dönüştürebilirim.

dotnet publish -r win-x64 --self-contained -p:PublishSingleFile=true -p:SuppressTrimAnalysisWarnings=true

eklersem

-p:EnableCompressionInSingleFile=true

O zaman daha da küçüktür. Kod değişikliği yok. Tüm testlerimi yap, iyi görünüyor. .NET 1.1’den üniversiteden aldığım projem artık .NET 6.0, çapraz platform, tek bir EXE’de 11 megabaytlık bağımsız. Tatlı.


Sponsor: Rocket Mortgage®’de burada yaptığınız işler %100 etkili olacak ancak tüm boş zamanınızı almayacak ve size mükemmel bir iş-yaşam dengesi sunacak. Ya da bizim dediğimiz gibi, teknoloji/yaşam dengesi! Daha fazla bilgi edin.




Scott hakkında

Scott Hanselman eski bir profesör, eski finans baş mimarı, şimdi konuşmacı, danışman, baba, diyabetik ve Microsoft çalışanıdır. Başarısız bir stand-up komedyeni, köşe yazarı ve kitap yazarıdır.

Facebook
twitter
abone olmak
Hakkında Bülten

Barındırma Tarafından
Bir Azure Uygulama Hizmetinde barındırılıyor










Bir cevap yazın

Ready to Grow Your Business?

We Serve our Clients’ Best Interests with the Best Marketing Solutions. Find out More

How Can We Help You?

Need to bounce off ideas for an upcoming project or digital campaign? Looking to transform your business with the implementation of full potential digital marketing?

For any career inquiries, please visit our careers page here.
[contact-form-7 404 "Bulunamadı"]