2

.NET Compact Frameworkでサポートされているメソッドとサポートされていないメソッドを含む(.NET Framework 3.5の)クラスがいくつかあります。.NETCompactFrameworkには存在しないクラスもいくつかあります。

たとえば、System.IO.Fileクラスの場合、File.Create関数は.NET Compact Frameworkでサポートされていますが、サポートされFile.Encryptていません。

別の例:System.IO.Fileクラスは.NET Compact Frameworkでサポートされていますが、サポートされてSystem.Diagnostic.StackTraceいません。

私はコンパイラに次のようなことを伝える必要があります:

#ifdef COMPACT_FRAMEWORK   // I'm compiling this from a smart device project

MyEncryptMethod("filename");

#else // I'm compiling this from a desktop project

File.Encrypt("filename");

#endif

どのようにできるのか?
(特定のバージョンはWindows Mobile 6.1 Professionalです)。

4

3 に答える 3

3

追加するだけで、 と が表示windows-mobileされているため、制約をではなく にwindows-mobile-6変更する必要があります。#definePocketPCCOMPACT_FRAMEWORK

#ifdef PocketPC   // PocketPC is what the WM SDK uses

MyEncryptMethod("filename");

#else // I'm compiling this from a desktop project

File.Encrypt("filename");

#endif

アップデート:

ニック: イムズが言ったこと。:) スマート デバイス プロジェクトの 1 つを使用してプロジェクトをビルドすると、Visual Studio は自動的に条件付きコンパイル シンボルPocketPCをプロジェクトに追加します。

VS2008 のメイン メニューから [プロジェクト] をクリックし、下部にあるプロジェクトの [プロパティ] を選択します。

プロジェクトの [プロパティ] ページで [ビルド] タブに移動すると、PocketPC既に定義されている場所が表示されます。

于 2012-11-07T16:51:13.910 に答える
2

あなたが提供したコードは良いですCOMPACT_FRAMEWORK。コンパイル シンボルを定義するだけです。

まず、コンパクト フレームワークのアセンブリをビルドするときに使用するビルド構成を定義します。次に、このビルド構成で、COMPACT_FRAMEWORK条件付きコンパイル シンボルを定義するだけです。

条件付きコンパイル シンボルはBuild、プロジェクト プロパティのタブで定義されます。

于 2012-11-06T12:52:37.703 に答える
0

クラス内のメソッドを検索するコードを次に示します。

    public static bool execCmd(string sFunc, string sArg, ref string sResponse)
    {
        bool bRet = true;
        try
        {
            // Instantiate this class
            myCommands cmbn = new myCommands(sFunc, sArg);

            // Get the desired method by name: DisplayName
            //MethodInfo methodInfo = typeof(CallMethodByName).GetMethod("DisplayName");
            MethodInfo methodInfo = typeof(myCommands).GetMethod(sFunc);

            // Use the instance to call the method without arguments
            methodInfo.Invoke(cmbn, null);
            sResponse = cmbn.response;
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("Exception in execCmd for '" + sFunc + "' and '" + sArg + "' " + ex.Message); 
            bRet = false; 
        }
        return bRet;
    }

myCommands を検索しているクラスに変更する必要があり、sFunc を探しているメソッドに設定する必要があります。そのコードを使用すると、メソッドがクラスに存在するかどうかを確認できます。

〜ヨセフ

于 2012-11-09T18:11:46.027 に答える