我目前正在尝试学习如何构建自定义SSIS组件,这个过程的文档非常糟糕且非常稀疏。但后来我偶然发现了一个用VS 2008 for SQL Server 2008编写的大量开源组件。我想下载它们并探索它们的工作方式将是一个非常好的学习机会。
他们导入VS 2015并成功构建而没有问题。但是我不想针对SQL Server 2008测试它们,我没有它的副本。我希望它们能够对抗SQL Server 2014。
从理论上讲,这应该很容易。删除C:\Program Files (x86)\Microsoft SQL Server\100\SDK\
中对SQL Server SDK管道组件的引用,并将其更改为C:\Program Files (x86)\Microsoft SQL Server\120\SDK\
- 如果这样做,项目根本不会抱怨。
除了构建失败:静默。错误列表中不会产生错误,但也不会产生任何dll。检查输出窗口可以找出原因:
错误CS0246:类型或命名空间名称'IDTSComponentMetaData100' 无法找到(您是否错过了使用指令或程序集 引用?)
该主题有多种重复,具体取决于您已更换的DLL数量。如果您双击一个,它会将您带到违规行,但VS 2015不会将该行标记为有问题。实际上,您可以右键单击有问题的类,“转到定义”并获得[从元数据]细分,就像您对任何有效参考一样。
事实上,对于更简单的项目,可以在Visual Studio 2015中创建一个新项目,从SQL Server 2014添加对必要dll的引用,然后完整地复制和粘贴代码,它将构建而无需投诉。
我已检查过csproj文件,并且引用已更新为其预期版本。
<Reference Include="Microsoft.SQLServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SQLServer.DTSRuntimeWrap.dll</HintPath>
</Reference>
我以前从未见过VS表现得像这样。发生了什么,我该如何解决?
答案 0 :(得分:1)
该项目设置为针对旧版本的.Net构建,该版本与更新版本的SQL Server不兼容。将项目属性中的目标框架更改为最新版本的.Net解决了该问题。
在这个特殊情况下,它发现了另一个错误,说项目缺少对Microsoft.CSharp.RuntimeBinder.Binder.Convert
的引用。添加Microsoft.CSharp
的引用修复了该引用。