2016-05-19 6 views
1

私はnode.jsアプリケーション内からC#関数を呼び出すためにedge.jsを使用していましたが、C#コードを実行するときには次のようになります。ここでedge.jsのdllをアクセスするには

メタデータファイル 'System.Text.dllを' が見つかりませんでした

メタデータファイル 'System.Collections.Generic.dll' は

を見つけることができませんでした

...

私のコード基本的にSSISパッケージをC#から呼び出すストアドプロシージャを使用して実行したいと考えています。基本的に私の参照されたDLLはすべて見つかりません?どこにdllを置いてそれらを見つけるべきですか?

var executeSQL = edge.func(function() { 
    /* 
    #r "System.Data.dll" 
    #r "System.Collections.Generic.dll" 
    #r "System.Linq.dll" 
    #r "System.Text.dll" 

    using System.Linq; 
    using System.Text; 
    using System.Data; 
    using System.Collections.Generic; 
    using System.Threading.Tasks; 

    public class StartUp 
    { 

    public async Task<object> Invoke(object input) 
    { 
     string result = string.Empty; 
     string packagePath = @"\SSISDB\test\package.dtsx"; 
     string spName = "storedProcName"; 



     using (var conn = new System.Data.SqlClient.SqlConnection("connectionString")) 
     using (var command = new System.Data.SqlClient.SqlCommand(spName, conn) 
     { 
      CommandType = System.Data.CommandType.StoredProcedure 
     }) 
     { 
      conn.Open(); 
      command.Parameters.AddWithValue("@PackagePath", packagePath); 
      command.ExecuteNonQuery(); 
      Console.WriteLine("Finished"); 
     }; 

     return null; 
    } 
    } 
    */ 
}); 

は、私はC#のなしでこれを行うと、MSSQLストアドプロシージャを実行するが、これは使用してedge.js

+0

スクリプトと同じディレクトリにあります。 – stuartd

答えて

0

stuartdのコメントは、私が試したスクリプトと同じディレクトリの下にdllを置くという意味で正しいですが、私は同じ問題を抱えていました。私は私の問題をC#コードを別のファイルとして持つことで解決し、次にexecuteSSIS関数の一部としてそのファイルを参照しました。 payloadはnode.jsスクリプトからC#スクリプトに渡されるオブジェクトです。このようにして私の問題を解決しました。

var payload = { 
     filePath: 'C:/temp/xlsx/' + req.file.filename, 
     path: req.packageName, 
     server: req.server 
    }; 

var executeSSIS = edge.func({ 
     source: __dirname + '/cs/Program.cs', 
     references: [ 
     __dirname + '/cs/System.Data.dll' 
     ] 
    }); 

executeSSIS(payload); 
0

は誰をいに慣れるための単なる例のテストだったように、単にノード内のモジュールを使用することができます知っています上記の答えが "同じディレクトリにあるスクリプト"であるかどうかを確認してください。同じメタデータファイルが見つかりませんでした。 BenYeomons、あなたのために働いた?

+0

私は別のアプローチをして修正することができました。すぐに回答として投稿します – BenYeomans

+0

@BenYeomans - これまで「異なるアプローチ」を投稿する機会はありますか? – SnowballsChance

関連する問題