如何在asp.net核心应用程序中运行ssis包?

Nag*_* Hs 5 asp.net asp.net-core

我已经使用Microsoft.SqlServer.Dts.Runtime在ASP.NET MVC中运行包。但是我需要在asp.net核心中运行它。由于我们无法在asp.net核心中添加单个dll,我想知道是否有人知道是否有nuget软件包会有所帮助。

Nag*_* Hs 5

只是为了详细说明我如何解决此问题。下面是答案

要运行SSIS包,您需要在代码中的DLL下面

  1. Microsoft.SqlServer.ManagedDTS.dll

  2. Microsoft.SqlServer.PipelineHost.dll

  3. Microsoft.SqlServer.DTSRuntimeWrap.dll

  4. Microsoft.SqlServer.DTSPipelineWrap.dll

在MVC项目中添加DLL很容易,但是在asp.net核心中,它必须采用Nuget包的形式。

因此,可以使用nuget包资源管理器轻松创建nuget包。以下是链接

https://docs.nuget.org/create/using-a-gui-to-build-packages

在nuget包浏览器中,添加一个lib文件夹,在其中添加一个.net文件夹dnxcore50并添加上述DLL。单击工具分析包并保存nuget

在此处输入图片说明

在Visual Studio 2015解决方案中,您可以引用本地包。工具-Nuget软件包管理器-软件包管理器设置-软件包源添加本地软件包路径。

在此处输入图片说明

之后,您将可以使用nuget软件包管理器添加nuget软件包并选择本地软件包作为源

在此处输入图片说明

如果还原软件包时出错,则将dnxcore添加到imports部分,并将“ Microsoft.NETCore.Portable.Compatibility”:“ 1.0.1-rc2-24027”添加到project.json中的依赖项

"dependencies": {
"Microsoft.AspNet.Hosting": "1.0.0-rc1-final",
"Microsoft.NETCore.Portable.Compatibility": "1.0.1-rc2-24027",
"SSISPackage": "1.0.0"
 }

"frameworks": {
"netcoreapp1.0": {
  "imports": [
    "dotnet5.6",
    "portable-net45+win8",
    "dnxcore"
  ]
  }
}
Run Code Online (Sandbox Code Playgroud)

之后,您将可以使用代码来运行类似于MVC项目的SSIS包。

Application app = new Application();
        Package package = null;
        try
        {
            package = app.LoadPackage(@"C:\Files\Package.dtsx", null);
            Variables vars = package.Variables;
            vars["status"].Value = "ACTIVE";

            DTSExecResult results = package.Execute();

        }
        catch
        {
            return false;

        }
        finally
        {
            package.Dispose();
            package = null;
        }
Run Code Online (Sandbox Code Playgroud)


Hos*_*kat 2

您可以将程序集打包到 nuget 包中,在解决方案中创建一个 Lib 文件夹来保存 nuget 包,然后创建一个 nuget.config 文件来设置包源以在解决方案中包含 Lib 文件夹。

以下链接包含有关创建 nuget 包并在本地托管它的更多详细信息:

希望有帮助