只是详细说明我是如何解决这个问题的。下面是答案
要运行 SSIS 包,您需要在代码中包含以下 DLL
Microsoft.SqlServer.ManagedDTS.dll
Microsoft.SqlServer.PipelineHost.dll
Microsoft.SqlServer.DTSRuntimeWrap.dll
Microsoft.SqlServer.DTSPipelineWrap.dll
在 MVC 项目中添加 DLL 很容易,但是在 ASP.NET Core 中,它需要采用 Nuget 包的形式。
因此,可以使用 nuget package explorer 轻松创建 nuget 包。下面是链接
https://docs.nuget.org/create/using-a-gui-to-build-packages https://docs.nuget.org/create/using-a-gui-to-build-packages
在 nuget 包资源管理器中添加一个 lib 文件夹,在其中添加一个 .net 文件夹 dnxcore50 并添加上述 DLL。单击工具分析包并保存 nuget
在Visual Studio 2015解决方案中,您可以引用本地包。
工具 - Nuget包管理器 - 包管理器设置 - 包源
添加本地包路径。
之后,您将能够使用 nuget 包管理器添加 nuget 包并选择本地包作为源
如果恢复包出错,请将dnxcore添加到导入部分,并将“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"
]
}
}
之后您将能够使用代码来运行类似于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;
}