Как установить путь к библиотеке C# для приложения?

Создайте файл, который будет обрабатывать соединение, и экспортируйте необходимые служебные функции, связанные с mysql, а затем вы можете инициализировать соединение в файле запуска и импортировать этот объект соединения в любой обработчик.

ваш mysql lib:

const mysql = require('mysql');
const logger = require('your-looger-path');
const mysqlConfig = {
  host: 'localhost',
  user: 'root',
  password: '',
  database: '<DB name>'
}

var pool = mysql.createPool(mysqlConfig);

module.exports.connect = function (cb) {
  return new Promise((resolve, reject) => {
    pool.on('connection', function (connection) {
      connection.on('error', function (err) {
        logger.error('MySQL error event', err)
      });
      connection.on('close', function (err) {
        logger.warn('MySQL close event', err)
      });
    });
    resolve()
  })
}

async function executeQuery (query) {
  logger.debug(`query: `, query)
  return new Promise((resolve, reject) => {
    try{
      pool.query(query, (e, r, f) => {
        if(e){
          reject(e)
        }
        else{
          logger.debug(r,f)
          resolve(r[0])
        }
      });
    }
    catch(ex){
      reject(ex)
    }
  })  
}

async function execSP(spName, params){
  return new Promise((resolve, reject) => {
    try{
      var paramPlaceHolder = ''
      if(params && params.length){
        for(var i = 0; i < params.length; i++){
          paramPlaceHolder += '?,'
        }
      }
      if(paramPlaceHolder.length){
        paramPlaceHolder = paramPlaceHolder.slice(0, -1)
      }
      logger.debug('final SP call', `CALL ${spName}(${params})`)
      pool.query(`CALL ${spName}(${paramPlaceHolder})`, params, (e, r, f) => {
        if(e){
          reject(e)
        }
        else{
          resolve(r[0])
        }
      });
    }
    catch(ex){
      reject(ex)
    }
  })
}
module.exports.executeQuery = executeQuery
module.exports.execSP = execSP

и затем создайте соединение в файле server.js:

var express = require('express');
var cors = require('cors');
var mysqllib = require('require to your mysql wrapper created above');
app = express(),
app.use(cors()),
port = process.env.PORT || 3001;
bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

mysqllib.connect().then(() => {
  console.log('Connected to mysql...')
  var routes = require('./api/routes/routes'); //importing route
  routes(app);
  console.log('todo list RESTful API server started on: ' + port);
  app.listen(port);

}).catch(e => {
  console.error('Error connecting mysql...')
  process.exit()
})

В вашем контроллере

'use strict';
const mysqlLib = require('your mysql lib path')

exports.get = function(req, res){
  console.log(req.query.printerModel);
  console.log('inside get function');
  mysqlLib.executeQuery('select * from inkdetails').then((d) => {
    console.log(d);
    res.status(200).send(d)
  }).catch(e => {
    console.log(e);
    res.status(500).send('Sorry, something went wrong!')
  })
};

Надеется, что это поможет вам.

10
задан 10 March 2009 в 11:31
поделиться

6 ответов

Я рекомендовал бы, чтобы приложения Ваших клиентов скопировали dll's, который они используют в их собственном каталоге.

VB6 раньше совместно использовала dll's между приложениями, у нас есть термин для этого: Ад DLL

8
ответ дан 3 December 2019 в 19:35
поделиться

В Вашем Основном:

 AppDomain.CurrentDomain.AssemblyResolve += (s,e)=>{
    var filename = new AssemblyName(e.Name).Name;
    var path = string.format(@"C:\path\to\assembly\{0}.dll",  filename);
    return Assembly.LoadFrom(path);
 };

Добавьте некоторую обработку исключений к этому

4
ответ дан 3 December 2019 в 19:35
поделиться

DLL должен будет или быть в GAC или в каталоге приложения или подкаталоге как ответы на Ваш более ранний сказанный вопрос.

Если Ваши клиенты хотят записать свои собственные приложения с помощью DLL, необходимо или установить его в GAC или заставить их копировать DLL также. Наличие нескольких копий библиотеки не походит на хорошую вещь, но это действительно: это означает, что можно обновить одну копию до другой версии, не повреждая все остальное.

1
ответ дан 3 December 2019 в 19:35
поделиться

Как я сказал в своем ответе относительно Вашего предыдущего вопроса:

Используйте инструкции по Перенаправлению блока в своем app.config или machine.config.

0
ответ дан 3 December 2019 в 19:35
поделиться

Можно зарегистрироваться и затем просмотреть действия, платформа взяла попытку загрузить блок. Это совершает очень легкие ошибки загрузки блока диагностирования.

Инструмент, чтобы сделать оба - "FUSLOGVW.exe" (Средство просмотра журнала Fusion, при этом Fusion является названием загрузчика), и включенный в SDK.

0
ответ дан 3 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: