Aracılığıyla paylaş


Tanılama iletileri için MSBuild ve Visual Studio biçimi

Bazı metinler veren bir araç yürütürken, MSBuild metinde hatalar ve uyarılar olup olmadığını inceler. Birçok araç, bu iletileri raporlamak için bilinen bir biçim kullanır. Varsayılan olarak, MSBuild çıktıya göre metinleri inceler ve hataları ve/veya uyarıları bildirir. Bu davranış, şu görevdeki Exec parametreler kullanılarak artırılabilir veya devre dışı bırakılabilir: IgnoreStandardErrorWarningFormat, CustomErrorRegularExpression, ve CustomWarningRegularExpression.

Not

Hata ve uyarıları algılamak için kendi normal ifadenizi kullanmaya karar verirseniz, MSBuild'in sonucu birer birer bir satıra bakacağını bilmeniz gerekir. Özel regex'iniz birden çok satırdaki bir öğeyle eşleşse bile, MSBuild'in bu metni işleme biçimi nedeniyle bu şekilde davranmaz.

Tümü düzgün biçimlendirilmiş ve MSBuild ve Microsoft Visual Studio tarafından tanınacak aşağıdaki dört iletiye göz atın:

Main.cs(17,20): warning CS0168: The variable 'x' is declared but never used
C:\dir1\strings.resx(2) : error BC30188: Declaration expected.
cl : Command line warning D4024 : unrecognized source file type 'file1.cs', object . . .
error CS0006: Metadata file 'System.dll' could not be found.

Bu iletiler burada gösterilen özel beş bölümlü biçime uygundur. Bu parçaların sırası önemlidir ve değişmemelidir.

Origin: : Subcategory Category CodeText

Örneğin,

c1 : Command line warning D4024 : unrecognized source file type 'test.xyz'

Origin: c1
Subcategory: Command line
Category: warning
Code: D4024
Text: unrecognized source file type 'test.zyz'

Bu biçimin bileşenlerinin her biri aşağıdaki gibi açıklanmıştır:

  • Kaynak (Gerekli) Kaynak boş olabilir. Varsa, kaynak genellikle örneklerden birinde olduğu gibi cl bir araç adıdır. Ancak başka bir örnekte gösterilen "Main.cs" gibi bir dosya adı da olabilir. Bu bir dosya adıysa, mutlak veya göreli bir dosya adı ve ardından aşağıdaki formlardan birinde isteğe bağlı ayraçlı satır/sütun bilgileri olmalıdır:

    (line) or (line-line) or (line-col) or (line,col-col) or (line,col,line,col)
    

    Satırlar ve sütunlar bir dosyada 1'de başlar; başka bir ifadeyle, bir dosyanın başlangıcı 1, en soldaki sütun ise 1'dir. Kaynak bir araç adıysa, yerel ayara göre değişmemelidir; yani yerel ayardan bağımsız olması gerekir.

  • Alt kategori (İsteğe bağlı) Alt kategori, kategorinin kendisini daha fazla sınıflandırmak için kullanılır; yerelleştirilmemelidir.

  • Kategori (Gerekli) Kategori "hata" veya "uyarı" olmalıdır. Dava önemli değil. Kaynakta olduğu gibi, kategori yerelleştirilmemelidir.

  • Kod (İsteğe bağlı) Kod, uygulamaya özgü bir hata kodunu/uyarı kodunu tanımlar. Kod yerelleştirilmemeli ve boşluk içermemelidir.

  • Metin Hatayı açıklayan kullanıcı dostu metin ve birden çok yerel ayara uygunsanız yerelleştirilmesi gerekir.

MSBuild komut satırı araçlarını (örneğin veya vbc.exe) çağırdığında, csc.exe araç tarafından standart çıkış ve standart hata akışlarına yayılan çıkışa bakar. Az önce tanımladığım hata biçimiyle eşleşen tüm satırlar özel olarak ele alınacaktır; diğer bir ifadeyle, hata veya uyarı olarak tanınan satırlar sırasıyla derleme hatalarına ve uyarılarına dönüştürülür. Bunun gerçek avantajını görmek için Visual Studio veya VS Code gibi bir geliştirme aracının içinden derlemeniz gerekir. MSBuild bu iletileri özel olarak ele aldığı için, Visual Studio görev listesinde birinci sınıf uyarılar ve hatalar olarak günlüğe kaydedilir. Kaynak satır/sütun bilgilerini belirtiyorsa, iletiye çift tıklanması sizi sorunlu dosyadaki hatanın kaynağına götürür.