我制作了一个将数据导出到msaccess的SSIS包。如果我尝试在其解决方案项目上运行包,它将执行而不会出错。但是当我在程序中调用包时,我会收到错误
无法加载文件或程序集'Microsoft.SqlServer.DTSRuntimeWrap,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'。这个程序集是为不同的处理器编译的。
这是我的代码:
public void RunPackage()
{
textstring("Locating Package...");
m_worker2.ReportProgress(20);
string PkgLocation;
Package pkg;
Microsoft.SqlServer.Dts.Runtime.Application _app = new Microsoft.SqlServer.Dts.Runtime.Application(); --> I got an exception here.
DTSExecResult pkgResult;
PkgLocation = Properties.Settings.Default.PackageLoc + "\"Package1.dtsx";
textstring("Loading Package...");
m_worker2.ReportProgress(30);
pkg = _app.LoadPackage(PkgLocation, null);
textstring("Executing Package...");
m_worker2.ReportProgress(30);
pkgResult = pkg.Execute();
textstring("Finished...");
m_worker2.ReportProgress(30);
textstring(pkgResult.ToString());
m_worker2.ReportProgress(30);
}
任何人都能以正确的方式指出我。我不知道那个错误是什么意思。请赐教?
由于
最好的问候
答案 0 :(得分:3)
这意味着,您混合了x86和x64架构。如果您的应用程序是x86(= 32位)架构,则不能使用x64(= 64位)编译的程序集。尝试使用任何CPU 或 x64 编译您的应用程序。
来自MSDN:
设置平台目标属性(C#)
在“解决方案资源管理器”中选择项目,在“项目”菜单上, 单击“属性”。
单击“构建”选项卡。
- 醇>
从平台目标列表中选择CPU类型。选项是Any CPU(默认值),x86,x64和Itanium。
以下是完整的链接:How to: Optimize an Application for a Specific CPU Type
重要提示:如果您编译x64并使用x64程序集,则您的应用程序将无法在32位版本的Windows下运行。
答案 1 :(得分:0)
我最近升级到SQL 2016,我的VB应用程序停止运行我的包。我没有问题保存到SQL 2016.VB不会通过LoadFromSqlServer方法运行它。刚报道无法加载文件或程序集'Microsoft.SqlServer.DTSRuntimeWrap'为我修复的是删除旧的12.0 manageddts引用并添加新的13.0引用(参见图像)
答案 2 :(得分:-1)
根据您系统上安装的SQL Server数据工具的版本,您必须在Microsoft.SqlServer.DTSRuntimeWrap
应用程序中添加特定版本的C#
。
例如,如果安装了SQL Server Data Tools 2010,则必须添加Microsoft.SqlServer.DTSRuntimeWrap 11.0.0.0
,对于SQL Server Data Tools 2012
您必须添加Microsoft.SqlServer.DTSRuntimeWrap 12.0.0.0