- این برنامه برای اجرا نیاز به دات نت فریم ورک 4 دارد. بنابراین بر روی ویندوزهای XP SP3 به بعد قابل اجرا است.
- ضمنا خطاهای برنامه در فایل متنی به نام ErrorsLog.Log در کنار فایل اجرایی برنامه ثبت میشوند.
PM> get-package -remote -filter wpf
PM> get-package -remote -filter silverlight
D:\Test>nuget list nhi
D:\Test>nuget install NHibernate
D:\Test>NuGet.exe u
Tools | Options, then Environment | Extension Manager and click "Automatically check for updates to installed extensions."
در دات نت 6، فضای نام و بستهی System.Drawing.Common صرفا مختص به ویندوز شده و دیگر برای سایر سیستم عاملها توسعه داده نمیشود. بجای آن، بستههای چندسکویی دیگری را توصیه کردهاند که مهمترین مشکل آنها، عدم امکان رندر متون راست به چپ، توسط آنها است ... این پشتیبانی اخیرا به ImageSharp.Drawing اضافه شدهاست.
روش محاسبهی سالهای کبیسه، در تقویم شمسی دات نت، در نگارش 4.6 آن (ارائه شده به همراه VS2015 CTP6) بهبود یافته و مطابق الگوریتم تقویم شمسی ویندوز 10 شدهاست. الگوریتم محاسبهی آن هم از این کتاب استخراج شدهاست (^).
using (var iplImage = new IplImage(@"..\..\Images\Penguin.png", LoadMode.Color)) { Cv.Dilate(iplImage, iplImage); var pictureBoxIpl = new OpenCvSharp.UserInterface.PictureBoxIpl { ImageIpl = iplImage, AutoSize = true }; flowLayoutPanel1.Controls.Add(pictureBoxIpl); }
pictureBoxIpl.RefreshIplImage(iplImage);
Bitmap bitmap; using (var iplImage = new IplImage(@"..\..\Images\Penguin.png", LoadMode.Color)) { bitmap = iplImage.ToBitmap(); // BitmapConverter.ToBitmap() } var pictureBox = new PictureBox { Image = bitmap, ClientSize = bitmap.Size }; flowLayoutPanel1.Controls.Add(pictureBox);
iplImage.ToBitmap(dst: (Bitmap)pictureBox.Image);
using System.Windows.Media; using OpenCvSharp; using OpenCvSharp.Extensions; namespace OpenCVSharpSample05Wpf { public partial class MainWindow { public MainWindow() { InitializeComponent(); loadImage(); } private void loadImage() { using (var iplImage = new IplImage(@"..\..\Images\Penguin.png", LoadMode.Color)) { Cv.Dilate(iplImage, iplImage); Image1.Source = iplImage.ToWriteableBitmap(PixelFormats.Bgr24); } } } }
public class LogRequestHandler : IHttpHandler
using System; using System.Net; using System.Text; using System.Threading.Tasks; using System.Web; namespace Async14 { public class LogRequestHandler : HttpTaskAsyncHandler { public override async Task ProcessRequestAsync(HttpContext context) { string url = context.Request.QueryString["rssfeedURL"]; if (string.IsNullOrWhiteSpace(url)) { context.Response.Write("Rss feed URL is not provided"); } using (var webClient = new WebClient {Encoding = Encoding.UTF8}) { webClient.Headers.Add("User-Agent", "LogRequestHandler 1.0"); var rssfeed = await webClient.DownloadStringTaskAsync(url); context.Response.Write(rssfeed); } } public override bool IsReusable { get { return true; } } public override void ProcessRequest(HttpContext context) { throw new Exception("The ProcessRequest method has no implementation."); } } }
http://localhost:4207/LogRequestHandler.ashx?rssfeedURL=https://www.dntips.ir/feed/latestchanges
using System; using System.Net; using System.Text; using System.Threading.Tasks; using System.Web.UI; namespace Async14 { public partial class _default : Page { protected void Page_Load(object sender, EventArgs e) { RegisterAsyncTask(new PageAsyncTask(LoadSomeData)); } public async Task LoadSomeData() { using (var webClient = new WebClient { Encoding = Encoding.UTF8 }) { webClient.Headers.Add("User-Agent", "LogRequest 1.0"); var rssfeed = await webClient.DownloadStringTaskAsync("url"); //listcontacts.DataSource = rssfeed; } } } }
<%@ Page Language="C#" AutoEventWireup="true" Async="true" CodeBehind="default.aspx.cs" Inherits="Async14._default" %>
نسخه جدید برنامه مدیریت بستههای دات نت هم آماده شد. میتونین از اینجا دانلودش کنین. (2.5MB)
طبق آمار خود سایت نوگت تا حالا بیش از 14.6 میلیون بار بستههای اون توسط کاربران دانلود شدن و بیش از 7000 بسته متمایز در این گالری موجوده!
یکی از مشکلاتی که تو این نسخه رفع شده موردی بود که در ارتباطات کند اینترنت بوجود میومد (^). تو کنسول این افزونه پس از وارد کردن قسمتی از نام یک بسته با فشردن کلید TAB نام تمام بستههایی که اول اسمشون اون عبارت تایپ شده باشه، لیست میشه (Tab Completion).
این عملیات در نسخههای قبلی با استفاده از یک درخواست HTML به OData (^) انجام میشد که دادههایی بیش از حد نیاز رو برمیگردوند. اما تو این نسخه این عملیات با استفاده از یک درخواست سریع JSON انجام میشه. (^)
من خودم این ویژگی رو تست کردم و افزایش سرعتش قابل ملاحظه بود!
یکی دیگه بهبودهای حاصله در دریافت بستههای وابسته نسبت به نسخه دات نت فریمورک در پروژه هدف هستش. یعنی میشه تنظیماتی روی بستههای نوگت اعمال کرد تا به صورت هوشمندانه نسخه متناسب با دات نت فریمورک مورد استفاده رو دانلود و نصب کنه.
اگه به صفحه مربوط به مشکلات و درخواستهای کاربران برای این افزونه (^) مراجعه کنین میبینید این دو موردکه تو این نسخه برطرف شدن بیشترین تقاضا رو داشتن. مورد اول با توجه به سرعت پایین اینترنت برای خود من خیلی کاربردیه.
نکته: اگر از VS 2010 SP1 استفاده میکنین هنگام به روز رسانی نوگت با استفاده از Extension Manager خود VS ممکنه با خطا مواجه بشین. اصولا بهترین روش نصب نوگت ابتدا unistall کردن نسخه قدیمی این افزونه از طریق appwiz.cpl و سپس نصب نسخه جدید با اجرای فایل vsix. هست (در هر دو قسمت نیاز به دسترسی administrator دارین).
و در نهایت:
You can develop your own package and share it via the NuGet Gallery. (^)
ویرایش:
متاسفانه دیروز وقت نکردم نتایج آزمایش با Fiddler رو اینجا بزارم.
مورد اول (Tab Completion) رو با سه نسخه از نوگت (1.6 و 1.8 و 2.0) برای دو عبارت jque و signa تست کردم و نتایج بدست اومده به شرح زیره. در زیر url درخواست مربوطه به همراه حجم دیتای دریافتی آورده شده:
نوگت 1.6:
nuget ver 1.6 jque: GET https://nuget.org/api/v2/Packages()?$orderby=DownloadCount%20desc,Id&$filter=startswith(tolower(Id),'jque')%20and%20IsLatestVersion&$skip=0&$top=90 HTTP/1.1 53691 bytes signa: GET https://nuget.org/api/v2/Packages()?$orderby=DownloadCount%20desc,Id&$filter=startswith(tolower(Id),'signa')%20and%20IsLatestVersion&$skip=0&$top=90 HTTP/1.1 11536 bytes
نوگت 1.8:
nuget ver 1.8 jque: GET https://nuget.org/api/v2/Packages()?$orderby=DownloadCount%20desc,Id&$filter=startswith(tolower(Id),'jque')%20and%20IsLatestVersion&$skip=0&$top=90 HTTP/1.1 53694 bytes signa: GET https://nuget.org/api/v2/Packages()?$orderby=DownloadCount%20desc,Id&$filter=startswith(tolower(Id),'signa')%20and%20IsLatestVersion&$skip=0&$top=90 HTTP/1.1 11536 bytes
نوگت 2.0:
nuget ver 2.0 jque: GET https://nuget.org/api/v2/package-ids?partialId=jque HTTP/1.0 598 bytes signa: GET https://nuget.org/api/v2/package-ids?partialId=signa HTTP/1.0 457 bytes
پاسخ سرور به عبارت signa در نسخه 2.0:
HTTP/1.1 200 OK Cache-Control: private Content-Type: application/json; charset=utf-8 Server: Microsoft-IIS/7.0 X-AspNetMvc-Version: 3.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Thu, 28 Jun 2012 07:23:06 GMT Connection: close Content-Length: 457 ["SignalR","SignalR.Client","SignalR.Client.Silverlight","SignalR.Client.Silverlight5","SignalR.Client.WP7","SignalR.EventStream","SignalR.Hosting.AspNet","SignalR.Hosting.Common","SignalR.Hosting.Owin","SignalR.Hosting.Self","SignalR.Js","SignalR.MicroSliver","SignalR.Ninject","SignalR.RabbitMq","SignalR.Reactive","SignalR.Redis","SignalR.Sample","SignalR.Server","SignalR.StructureMap","SignalR.WebSockets","SignalR.WindowsAzureServiceBus","Signals.js"]
میبینید که غیرقابل مقایسه هستن! و همونوطور که آقای هنسلمن (^) در مورد نسخههای قدیمی گفتن: «دادههای بیش از حد نیاز رو برمیگردونن»
نسخههای قبل از 2.0 همگی از odata استفاده میکردن و دادههای برگشتی تماما encrypt شدهاند. اما در نسخه 2.0 دادههای برگشتی از نوع JSON هست (به Fiddler مراجعه کنین تا تفاوت واقعی رو ببینین. البته برای اینکه دادههای encrypt شده رو در fiddler ببینین باید طبق راهنمایی خودش از تنظیمات مربوط به decrypt ترافیک https استفاده کنین)