Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale aşağıdaki derleyici hatalarını ve uyarılarını kapsar:
- CS0017: 'Çıkış dosyası adı' programının tanımlı birden fazla giriş noktası var. Giriş noktasını içeren türü belirtmek için /main ile derleyin.
- CS0028: 'işlev bildirimi' giriş noktası olmak için yanlış imzaya sahip
- CS0402: 'identifier': Giriş noktası genel veya genel türde olamaz
- CS1555: Main yöntemi için belirtilen 'sınıf' bulunamadı
- CS1556: Main yöntemi için belirtilen 'yapı' geçerli bir sınıf veya yapı olmalıdır
- CS1557: Farklı bir çıkış dosyasında olduğundan Main yöntemi için 'class' kullanılamıyor
- CS1558: 'class' uygun bir statik Main yöntemine sahip değil
- CS1559: İçeri aktarıldığından Main yöntemi için 'object' kullanılamıyor
- CS2017: Modül veya kitaplık oluştururken /main belirtilemez
- CS5001: Program giriş noktası için uygun statik bir 'Main' yöntemi içermiyor
- CS7022: Programın giriş noktası genel koddur; '{0}' giriş noktası yoksayılır.
- CS8801: Bu bağlamda, üst düzey bir deyimde bildirilen yerel değişken veya yerel işlev '{0}' kullanılamaz.
- CS8802: Yalnızca bir derleme biriminin üst düzey deyimleri olabilir.
- CS8803: Üst düzey deyimlerin ad alanı ve tür bildirimlerinden önce olması gerekir.
- CS8805: Üst düzey deyimleri kullanan program yürütülebilir bir dosya olmalıdır.
- CS8899: Uygulama giriş noktaları 'UnmanagedCallersOnly' ile ilişkilendirilemez.
- CS8937: En az bir üst düzey deyimi boş olmamalıdır.
Main yöntem bildirimi
- CS0017: 'Çıkış dosyası adı' programının tanımlı birden fazla giriş noktası var. Giriş noktasını içeren türü belirtmek için /main ile derleyin.
- CS0028: 'işlev bildirimi' giriş noktası olmak için yanlış imzaya sahip
- CS0402: 'identifier': Giriş noktası genel veya genel türde olamaz
- CS1558: 'class' uygun bir statik Main yöntemine sahip değil
- CS5001: Program giriş noktası için uygun statik bir 'Main' yöntemi içermiyor
- CS8899: Uygulama giriş noktaları 'UnmanagedCallersOnly' ile ilişkilendirilemez.
Yürütülebilir dosyaya derlenen bir program, giriş noktası olarak geçerli Main bir yöntem içermelidir. Daha fazla bilgi için bkz. Main() ve komut satırı bağımsız değişkenleri.
Bu hataları düzeltmek için yöntem bildiriminizin Main şu kurallara uydığından emin olun:
-
Mainyöntemi, çalışma zamanı programın giriş noktasını (CS0028, CS1558) tanımlamak için belirli bir imza gerektirdiğinden, dönüş türüvoid,int,Task, veyaTask<int>olanstaticolarak bildirilmelidir. yöntemi isteğe bağlı olarak komut satırı bağımsız değişkenleri için birstring[]parametre kabul edebilir. Eğerasyncdeğiştiricisini kullanıyorsanız, dönüş türüTaskveyaTask<int>olmalıdır ve C# dil sürümü 7.1 veya üzerini hedeflemelisiniz. -
Mainİçeren tür tür bağımsız değişkenleri (CS0402) gerektirdiğinde çalışma zamanı benzersiz bir giriş noktasını çözümleyemediğinden, yöntemi herhangi bir genel türden dışarı taşıyın. -
UnmanagedCallersOnlyAttribute özniteliğini
Mainyönteminden kaldırın, çünkü giriş noktaları yönetilen koddan çağrılabilir olmalı veUnmanagedCallersOnlyyöntemi sadece yönetilmeyen arayanlarla kısıtlar (CS8899). - Kodunuz farklı türlerde birden çok
Mainyöntem içerdiğinde, hedeflenen giriş noktasını (CS0017) içeren türü belirtmek için StartupObject derleyici seçeneğini kullanın. Bu seçenek olmadan, derleyici hangiMainyöntemin kullanılacağını belirleyemez. -
Mainveya winexeOutputType içeren bir proje bir giriş noktası (CS5001, CS1558) gerektirdiğinden yürütülebilir projenizin doğru imzaya sahip bir yöntem tanımladığını doğrulayın. Yöntem adı büyük/küçük harfe duyarlıdır, bu nedenlemainuygun değildir. Yürütülebilir dosyaya ihtiyacınız yoksa çıkış türünü kitaplık olarak değiştirin.
Uyarı
CS0028, geçerli C# derleyicisinin üretmediği eski bir tanılamadır. Derleyicinin modern sürümleri, yöntemin imzası geçersiz olduğunda CS1558 veya Main bildirir.
Uyarı
CS0017, CS0028, CS0402, CS1558 ve CS5001 yalnızca Derleme veya Yeniden Derleme işlemleri sırasında bildirilir. IDE'de yazarken IntelliSense tanılaması olarak görünmezler.
StartupObject derleyici seçeneği
- CS1555: Main yöntemi için belirtilen 'sınıf' bulunamadı
- CS1556: Main yöntemi için belirtilen 'yapı' geçerli bir sınıf veya yapı olmalıdır
- CS1557: Farklı bir çıkış dosyasında olduğundan Main yöntemi için 'class' kullanılamıyor
- CS1559: Yüklendiğinden Main metodu için 'object' kullanılamıyor
- CS2017: Modül veya kitaplık oluştururken /main belirtilemez
StartupObject derleyici seçeneği (olarak /mainda bilinir), birden çok tür tanımladığında programın Main yöntemini içeren türü belirtir. Daha fazla bilgi için bkz. StartupObject ve Main() ve komut satırı bağımsız değişkenleri.
Bu hataları düzeltmek için, StartupObject seçeneğinin geçerli bir türe başvurduğundan emin olun:
- Belirttiğiniz
StartupObjecttam sınıf adının, geçerli derlemenin kaynak kodunda tanımlanan bir türle eşleştiğini doğrulayın. Derleyici, belirtilen tür (CS1555) için yalnızca derlenen kaynak dosyaları arar; başvurulan bütünleştirilmiş kodları değil. Ad alanı da dahil olmak üzere tam nitelikli adda yazım hatalarını kontrol edin. - Emin olun ki
StartupObjecttanımlayıcısı, genel olmayan birclassveyastructöğesine başvurur. Derleyici, geçerliMainbir yöntem (CS1556) içerebilen somut bir tür gerektirir. Arabirimler, numaralandırmalar, temsilciler ve genel türler geçersiz hedeftir. - Belirtilen sınıfı geçerli derlemeyle aynı çıkış dosyasına taşıyın.
/mainseçeneği, giriş noktasını tek bir çıkış derlemesi içinde çözümler ve farklı bir çıkışta derlenen türlere referans veremez (CS1557). - Belirtilen türün başvuruda bulunılan derleme yerine geçerli projenin kaynak kodunda tanımlandığından emin olun. Derleyici içeri aktarılan bir türü giriş noktası (CS1559) olarak ayarlayamaz.
-
/mainseçeneğini, bir kitaplık veya modül oluştururken kaldırın. Yalnızca yürütülebilir projelerin (OutputType değeri exe veya winexe olan) giriş noktaları (CS2017) vardır. Bir giriş noktasına ihtiyacınız varsa çıkış türünü yürütülebilir dosya olarak değiştirin. - Emin olun,
StartupObjecttarafından belirtilen tür geçerli birMainmetodu bildiriyor. Tür varsa ancak uygun bir statikMainyöntem içermiyorsa, derleyici CS1558 oluşturur. Gerekli imza için yöntem bildirimi bölümüne bakın.Main
Uyarı
CS1557 ve CS1559, geçerli C# derleyicisinin üretmediği eski tanılamalardır. Bu hataları tetikleyen senaryolar artık desteklenmiyor veya algılamayı garanti etmek için çok seyrek gerçekleşiyor.
Uyarı
CS1555 ve CS1556 yalnızca Derleme veya Yeniden Derleme işlemleri sırasında bildirilir. Siz IDE'ye yazarken IntelliSense tanılaması olarak görünmezler.
Üst düzey ifadeler
- CS7022: Programın giriş noktası genel koddur; '{0}' giriş noktası yoksayılır.
- CS8801: Bu bağlamda en üst düzey deyimde bildirilen {0} yerel değişkeni veya yerel işlevi kullanılamaz.
- CS8802: Yalnızca bir derleme biriminin üst düzey deyimleri olabilir.
- CS8803: Üst düzey deyimlerin ad alanı ve tür bildirimlerinden önce olması gerekir.
- CS8805: Üst düzey deyimleri kullanan program yürütülebilir bir dosya olmalıdır.
- CS8937: En az bir üst düzey deyimi boş olmamalıdır.
Üst düzey deyimler , programın giriş noktası olarak açık Main yöntemin yerini alır. Daha fazla bilgi için bkz
Bu hataları düzeltmek için üst düzey deyimleri kullanımınızın şu kurallara uydığından emin olun:
- Yalnızca bir derleme birimi (dosya) en üst düzey deyimler (CS8802) içerebileceğinden, tüm üst düzey deyimleri tek bir dosyada birleştirin. Diğer dosyalardan en üst düzey kodları tek bir dosyaya taşıyın. Kalan dosyaları yalnızca ad alanı ve tür bildirimleri içerecek şekilde yeniden yapılandırın.
- Derleyici en üst düzey deyimlerin ilk sırada görünmesini gerektirdiğinden tüm üst düzey deyimleri dosyadaki herhangi bir
namespaceveyatypebildirimin önüne yerleştirin (CS8803). Yönergelerinizusingvarsa, bu yönergeler yine de en üst düzey deyimlerden önce gelebilir. - Yalnızca boş deyimler, boşluklar veya açıklamalar içeren bir dosya, geçerli bir giriş noktası olarak kabul edilmez (CS8937). Bu nedenle, yürütülebilir kod içeren en az bir deyim ekleyin. Gereksinimi karşılamak için yöntem çağrısı, değişken ataması veya ifade gibi bir deyim ekleyin.
- En üst düzey deyimlerde bildirilen yerel değişkenlere ve yerel işlevlere yalnızca üst düzey deyim bağlamının içinden erişin, çünkü bu bildirimler oluşturulan giriş noktası yöntemine bağımlı olup, diğer dosyalara veya aynı dosyada bildirilen tür üyelerine (CS8801) görünür değildir. Durumu dosyalar arasında paylaşmanız gerekiyorsa, değişkeni bir tür üzerinde statik alan veya özellik olarak bildirin.
- Üst düzey deyimler bir giriş noktası tanımladığından ve giriş noktaları yalnızca yürütülebilir projelerde (CS8805) geçerli olduğundan projenin OutputType değerini exe olarak ayarlayın. Kitaplık oluşturuyorsanız, en üst düzey ifadeleri kaldırın ve bunun yerine türler ve metotları kullanın.
- Derleyici üst düzey deyimleri giriş noktası olarak değerlendirdiğinden ve herhangi bir açık
MainveyaMainyöntemini dikkate almadığından, üst düzey deyimler varsa tüm açıkMainveyaMainyöntemlerini kaldırın veya yeniden adlandırın; aksi takdirde uyarı (CS7022) üretir. AçıkMainbir yöntem kullanmayı planlıyorsanız, üst düzey deyim kodunu bu yönteme taşıyın ve üst düzey deyimlerini kaldırın.