スクリプト#、診断方法 "C#ソースがコンパイルされていて、サポートされていない機能を使用していないことを確認する"

私はこのメッセージを受け取ります

「C#ソースがコンパイルされ、サポートされていない機能を使用していないことを確認する」

そして私が間違っていることを解決する方法を知らない。誰か知っていますか?

私はその言葉の一般的な概念を理解していますが、もっと具体的なものが必要です

編集:私は特定のインスタンスを診断することを求めていませんでした。もっと情報を与えるコンパイラスイッチがあるかどうか聞いていた

とにかくここに失敗したコードです

    [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が許可しないという事実を知りたい

var win =新しいExt.Window

代わりに

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

あなたはこれで様々な試みを見ることができます。すべてコンパイルされますが、S#

2
@ pm100私はこの状況で私を助ける一般的なヒントで私の答えを更新しました。
追加された 著者 DuckMaestro,
私はあなたのC#ソースがコンパイルされていることを確認することから始めます。そうであれば、 Script#でサポートされていない機能を使用していないことを確認したいと思います。真剣に?まず、私たちの誰もこの距離からあなたのコードや画面を見ることができないことを覚えておきましょう。あなたが私たちに与えたのと同じエラーメッセージ以外の情報は与えていません。申し訳ありませんが、詳細は記されていませんが、「本当の質問ではありません」と締めくくっています。
追加された 著者 Ken White,

4 答え

私はしばしば、コード内に名前空間の詳細がある場合、Script Sharpが静かに失敗することを発見しました。

私は十分な注意を払っていないが、どのインスタンスが怒っているかを覚えている。しかし、通常、これらのビルドの失敗は、私がEnumを比較するときに起こります(if(enum1 == EnumTypes.Something))

または、名前空間接頭辞を使って何かを参照しているとき。 すなわちFoo.Bar bar = Foo.Bar.Create(blah);

私はそれが正確に失敗するものかどうか覚えていませんが、これは何かsimularです

1
追加された
これは私の問題だった
追加された 著者 pm100,
これらのエラーを回避する最良の方法は、コードベースを頻繁に構築することです。
追加された 著者 Andrew Harry,

このエラーで表示される最も一般的な理由は、部分的に修飾された型名であり、スクリプト#0.7.3では完全にサポートされていません。例えば:

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.

私のコマンドラインスクリプトは一般的にはこのように見えますが、 ssc にそのすべてのパラメータを問い合わせることができます。

@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
追加された

あなたが遭遇しているエラーは、残念ながらコンパイラが失敗したため、より良いエラーを報告することができなかった場合です。あなたが本当に不幸にする何かをすれば、他の言語(c#を含む)のための同様の内部コンパイラエラーが表示されます。可能な限り、より良いエラーを生成することは、私が完全に同意しますが、サポートされていない構造を検出することは、構造をサポートするための作業と同じくらい良い場合があります。

私はあなたが最新のコンパイラバージョンを使用できることを願っています - ビルドからビルドまでの間違いの経験が絶え間なく改善されています。例えば、C#コードの報告、C#コードの残りのコンパイル、結果として得られるjavascriptでは、失敗した行の代わりに、すべてまたは何も接近しないようにするだけでなく、msbuildパスのエラー報告も改善されます。

この特定のケースでは、上記のコードで名前空間で修飾された型名(extwrap.Extおよびjslate.viewport)の使用がエラーの背後にあると思われます。実際には、この制限はスクリプト#readme(以前は利用可能でしたが、一部が古くなっていたため削除されていました)に記載されています...ごめんなさい...オンラインで戻ったり、セットアップで。)

また、スクリプトの中核部分を再考することで、一度のコンパイルのアプローチがすべての問題を処理します。私はこれを開始して、コンパイラのソースを公開したいと思います。この基本的な変化を実現することは、GitHubの完全なプロジェクトを進展させるための次のステップを進めているところです。

1
追加された
私は問題を解決しました.net reflector pro(VS内で完全にデバッグ可能なソースコードに逆コンパイルする)を実行し、例外がスローされるとブレークします。 ocurseの場合、コンパイラのソースがあれば、デバッグがはるかに簡単になり、修正プログラムを投稿することができます:-)。これは名前空間の修飾子によるものです。
追加された 著者 pm100,
BTW - 私はsscがソースコードではなくILを読んでいると仮定していました。したがって、私の以前の質問のなかには、なぜcant sscが参照されたアセンブリのコードも生成したのです。興味深いことに、JSILはILを読む。不快な解析パスを避け、var、lambdasなどを無料で入手します
追加された 著者 pm100,

私は#Script#がおそらく問題のある行を表示していると思います##そうですか?それはあなたにヒントを与えるかもしれない:)

Script#Blogの同様の警告の例を次に示します。

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

     

stackoverflowのフォーラムで新しいタグを作成できない   scriptsharpなので、私はここに投稿しています。それは、   環境変数値はまだサポートされていません。使用   生成するSystem.Gadgets.EnvironmentService.GetEnvironmentVariable   JSの "System.Environment.getEnvironmentVariable(..)"は、   コンパイルエラー "C#ソースがコンパイルされていることを確認してください。   サポートされていない機能を使用していません」。

     

実装がnullを返すこともわかりました。そうでない場合   私は何とかこのJSをコードに埋め込むことができますか?

     

歓声のブルース

PS: !!!!コードを表示する!!!!

0
追加された