我使用Microsoft.SqlServer.Dts.Runtime在ASP.NET MVC中运行包。但是我需要在asp.net核心中运行它。由于我们无法在asp.net核心中添加单独的dll,我想知道是否有人知道是否有nuget包可以提供帮助。
答案 0 :(得分:4)
只是详细说明我是如何解决这个问题的。以下是答案
要运行SSIS包,您需要在代码
中的DLL下面Microsoft.SqlServer.ManagedDTS.dll
Microsoft.SqlServer.PipelineHost.dll
Microsoft.SqlServer.DTSRuntimeWrap.dll
Microsoft.SqlServer.DTSPipelineWrap.dll
在MVC项目中添加DLL很容易,但是在asp.net核心中,它需要采用Nuget包的形式。
因此可以使用nuget package explorer轻松创建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添加到导入部分并添加" 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;
}
答案 1 :(得分:2)
您可以将程序集打包到nuget包中,在解决方案中创建一个Lib文件夹以保存nuget包,然后创建一个nuget.config文件来设置包源,以便在解决方案中包含Lib文件夹。
以下链接包含有关创建nuget包并在本地托管的更多详细信息:
希望有所帮助
答案 2 :(得分:0)
您现在可以从以下位置直接在.net核心项目中引用dll(每个dll)以立即运行ssis软件包
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.PipelineHost
C:\Windows\Microsoft.NET\assembly\GAC_64\Microsoft.SqlServer.DTSRuntimeWrap
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap
您不再需要创建nuget包