script #, nasıl teşhis edilir "C # kaynağınızın derlendiğinden ve desteklenmeyen bir özellik kullanmadığınızdan emin olun"

Bu mesajı alıyorum

"C # kaynağınızın derlendiğini ve desteklenmeyen bir özellik kullanmadığınızı kontrol edin"

Ve yanlış yaptığım şeyi nasıl yapacağımı bilmiyorum. Kimse biliyor mu?

Söylediklerinin genel kavramını anlıyorum ama daha belirgin bir şeye ihtiyacım var

EDIT: Özel bir vakanın teşhis edilmesini istemedim. Daha fazla bilgi verecek bir derleyici anahtarı olup olmadığını soruyordum.

Neyse burada başarısız kod

    [ScriptName("Ext")]
    [IgnoreNamespace]
    [Imported()]
    public partial class Ext //: ext.data.Store
    {
        [ScriptName("create")]
        public static object Create(string name, object config)
        {
            return null;
        }
    }    
public sealed class viewport
    {

        public static viewport MakeViewPort()
        {
            return new viewport();
//return (viewport)extwrap.Ext.Create("Ext.container.ViewPort", null);
        }
    }
    public class Class1
    {
        public void foo()
        {

            jslate.viewport vp = jslate.viewport.MakeViewPort(); <=== fails here


        }
    }

Extjs4'ün izin vermediği gerçeğini aşmaya çalışıyorum

var win = yeni Ext.Window

yerine

var win = Ext.create('Ext.window')

Bu konuda çeşitli girişimler görebilirsiniz. Tüm derleme ama S # ile bounced

2
@ pm100 Cevabımı bu durumda bana yardımcı olacak genel bir ipucu ile güncelledim.
katma yazar DuckMaestro, kaynak
C # kaynağınızın derlendiğinden emin olarak başlardım. Varsa, Script # tarafından desteklenmeyen bir özellik kullanmadığınızdan emin olurum. Ciddi anlamda? Hiçbirimizin kodunuzu veya ekranınızı bu mesafeden göremediğini ve bize verdiğiniz hata mesajından başka bir bilgi vermediğinizi hatırlatarak başlardım. Üzgünüz, ancak daha fazla ayrıntı olmadan "Gerçek bir soru değil" olarak kapanma oyu.
katma yazar Ken White, kaynak

4 cevap

Kodda ad alanı detayları varsa, Script Sharp'ın sessizce başarısız olacağını gördüm.

Hangi örnekleri kızdırdığını hatırlamaya yeterince dikkat etmedim. Ancak, genellikle bu derleme hataları, Enums'ı karşılaştırdığımda ortaya çıkar (örneğin, eğer (enum1 == EnumTypes.Something))

Veya isim alanıyla birlikte bir şeyi referans alırken. yani, Foo.Bar bar = Foo.Bar.Create (filan);

Bunun tam olarak başarısız bir şey olup olmadığını hatırlayamıyorum - ama buna benzeyen bir şey

1
katma
bu benim sorunumdu
katma yazar pm100, kaynak
Bu hataları önlemenin en iyi yolu, kod tabanını sık sık oluşturmaktır.
katma yazar Andrew Harry, kaynak

Bu hata için gördüğüm en yaygın neden, Kısım # 0.7.3'den itibaren tam olarak desteklenmeyen, kısmen nitelikli bir tür adıdır. Örneğin:

namespace NSA.NSB
{
    class MyType { ... }
}

...

NSB.MyType myObj1 = new NSB.MyType();//generates the error
NSA.NSB.MyType myObj2 = new NSA.NSB.MyType();//does not generate the error

Speaking more generally, I've noticed sometimes detailed error messages don't bubble up all the way to Visual Studio. If you use the command line compiler instead (ssc.exe) you can sometimes see a more detailed error message or any thrown exceptions to help debug the cause of the error. One of my larger Script# projects occassionally tosses up the error you're seeing, so I actually keep a .bat along side my .csproj in order to debug the cause.

Komut satırı betiğim genel olarak böyle gözüküyor, ancak tüm parametreleri için ssc sorgulayabilirsiniz.

@SET SS="c:\program files (x86)\ScriptSharp\v1.0"
%sS%\ssc /debug ^
/D:MYDEFINE ^
/ref:%sS%\Framework\mscorlib.dll ^
/ref:%sS%\Framework\Script.Web.dll ^
/ref:%sS%\Framework\Script.jQuery.dll ^
/out:Output.js ^
.\Properties\AssemblyInfo.cs ^
.\RestOfMySourceCode.cs ^
...
1
katma

Karşılaştığınız hata maalesef derleyicinin başarısız olduğu ve sonuçta daha iyi bir hata bildiremediği durumdur. Gerçekten mutsuz yapan bir şey yaparsanız, diğer diller için benzer dahili derleyici hataları göreceksiniz (c # dahil). Mümkün olan her yerde daha iyi hatalar üretmenin yararlı olacağı konusunda hemfikir olmama rağmen, desteklenmeyen yapının tespit edilmesinin yapıyı desteklemek için yapılan çalışmaları yapmak kadar iyi olduğu birkaç durum vardır.

En son derleyici sürümünü kullanabildiğinizi ve kullanabildiğinizi umuyorum - her şey hata deneyiminde derleme aşamasından derlemeye devam ediyor ... örneğin C# line # raporlama, C# kodunun kalanını derleme ve bir hata ifadesi yayınlama msbuild yolunda daha iyi hata raporlamanın yanı sıra, başarısız ya da hiç olmayan bir yaklaşım için sonuçta ortaya çıkan javascript.

Bu özel durumda, yukarıdaki kodda namespace-nitelikli tür adlarının (extwrap.Ext ve jslate.viewport) kullanılmasının hatanın arkasında olduğundan şüpheleniyorum. Aslında bu sınırlama # benioku dosyasında listelenmiştir (eskiden kullanılabilirdi, ancak doktorun bir kısmı eski olduğundan beri kaldırıldı ... üzgünüm ... tekrar bir şeyleri çevrimiçi yapmak ya da dahil etmek gerekiyordu. kurulumda.)

Ayrıca, betiği # derleme yaklaşımının bazı temel bölümlerini bir kez ve herkes için yeniden düşünmek gibi birçok konuyla ilgilen. Bunu başlatmak ve derleyicinin kaynaklarını yayımlamak istiyorum. Bu temel değişikliği yerine getirmek, ilerlemeyi izleyenler için tüm projeyi GitHub'a getirmek için bir adım daha atmaktır.

1
katma
Problemi .net reflector pro kullanarak (ki bu VS içerisinde tamamen hata ayıklanabilir kaynak koduna ayrışır) ve sonra atılan istisnada mola verdim. Derecenin kaynağına sahip olsaydık, hata ayıklamak daha kolay olurdu ve düzeltmeler gönderebilirdik :-). Ad alanı niteleyicileri nedeniyle oldu.
katma yazar pm100, kaynak
BTW - ssc'nin kaynak kodu değil IL'yi okuduğunu varsaydım. Bu yüzden bazı soruları 'neden ssc'nin başvurulan derlemeler için de kod üretemediğini' sordum. JSIL'in IL'yi okuduğunu not etmek ilginç; pis ayrıştırma işleminden kaçınır ve var, ücretsiz vb.
katma yazar pm100, kaynak

Script # 'ın muhtemelen rahatsız edici satır #' ı yazdırdığını tahmin ediyorum, değil mi? Bu size bir ipucu verebilir :)

İşte bir Script # Blog'daki benzer bir uyarı örneği:

http://www.nikhilk.net/ScriptSharp-Update-Nov- 2009.aspx

     

stackoverflow'taki forum yeni bir etiket oluşturmama izin vermiyor   Scriptsharp, bu yüzden burada yazıyorum. Bu alma görünüyor   ortam değişkeni değerleri henüz desteklenmiyor. kullanma   System.Gadgets.EnvironmentService.GetEnvironmentVariable üretmek için   JS "System.Environment.getEnvironmentVariable (..)" verir   derleme hatası "C # kaynağınızın derlendiğini ve sizden emin olun   desteklenmeyen bir özellik kullanılmıyor. "

     

Ayrıca uygulamanın sadece null döndürdüğünü görüyorum. Değilse   destekleniyor, bu JS'yi bir şekilde koda ekleyebilir miyim?

     

Bruce Şerefe

Not: !!!! KODU BİZE GÖSTER !!!!

0
katma