0

Skype API(Skype4COM)を使用してプログラムを作成し、ランタイムコンパイルを行うことにしました。コンパイルSkypeAPIのライブラリで使用することを決定する前は、すべてが完全に機能していました。私がそれをやろうとしたとき、プログラムは私に言った:「メタデータファイル'c:\Users\Алексей\Dropbox\ SkypeBot \ Skype Bot \ bin \ Debug\Skype4COM.dll'を開くことができませんでした-'ロードしようとしました不正な形式のプログラム'"。どうすれば修正できますか?コードは次のとおりです。

public delegate object Do();
    protected static string Compile(string str)
    {
        try
        {
            var csc = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v3.5" } });
            CompilerParameters parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll", "System.dll", "SKYPE4COM.dll" }) { GenerateInMemory = true };
            //parameters.LinkedResources.Add("Skype4COM.dll");
            //parameters.EmbeddedResources.Add("SKYPE4COMLib.dll");
            //parameters.ReferencedAssemblies.Add("");

            CodeTypeReferenceExpression csSystemConsoleType = new CodeTypeReferenceExpression("System.Console");

            CompilerResults results = csc.CompileAssemblyFromSource(parameters, str);

            if (results.Errors.Count >= 1) return results.Errors[0].ErrorText;

            Type t = results.CompiledAssembly.GetType("Program");
            MethodInfo m = t.GetMethod("Method");

            Do DoMethod;
            DoMethod = (Do)Delegate.CreateDelegate(typeof(Do), m);
            return DoMethod().ToString();
        }
        catch (Exception e)
        {
            return e.Message;
        }
    }
4

1 に答える 1

1

まず、dllが登録されていることを確認してください。

テストプロジェクトを作成し、にCOM参照を追加するとSkype4COM.dll、VisualStudioによって相互運用機能アセンブリが作成されますInterop.Skype4COM.dll。そのファイルへの参照を追加する必要があります(System.Core.dllたとえば、への参照を追加したのと同じ方法で)。

于 2012-05-11T14:35:49.507 に答える