我创建了一个自定义PipelineComponent
来将数据转换为正确的案例,如下所示:
[DtsPipelineComponent(DisplayName = "ProperCase")]
public class ProperCaseTransform : PipelineComponent
{
//irrelevant code here
}
但是,当我将此组件添加到我的数据流中并单击“编辑”时,我遇到以下错误:
'null'的值对'stream'无效。 (Microsoft Visual Studio)
计划地点:
at System.Drawing.Icon..ctor(Stream stream,Int32 width,Int32 height) 在System.Drawing.Icon..ctor(流stream,Size size) at Microsoft.SqlServer.IntegrationServices.Designer.Common.ImageSourceHelper.GetIconFromResource(Assembly assembly,String resourceName,Boolean isLarge) at Microsoft.DataTransformationServices.Design.DesignUtils.ExtractManagedBitmap(String fileName,String resName,Boolean large) at Microsoft.DataTransformationServices.Design.DesignUtils.ExtractBitmap(String fileName,String iconResource,Boolean isNative,Boolean large) 在Microsoft.DataTransformationServices.Design.PipelineUtils.GetComponentIcon(IDTSComponentMetaData100 componentMetadata,IServiceProvider serviceProvider) 在Microsoft.DataTransformationServices.Design.FunctionLevelMappingUI..ctor(FunctionLevelComponentUI componentUI,IUserPromptService promptService) 在Microsoft.DataTransformationServices.Design.FunctionLevelComponentUI.EditImpl(IWin32Window parentControl) 在Microsoft.DataTransformationServices.Design.DtsComponentUI.Edit(IWin32Window parentWindow,变量变量,连接连接)
我已经看到Visual Studio 2012发生了类似的问题(显然CU4 for SP1修复了这个问题),但从未用于VS 2013.我该如何解决这个问题?我的组件在编辑时无法使用。
答案 0 :(得分:6)
我被这个问题给出了提示:error : Value of 'null' is not valid for 'stream'。虽然这显然是IDE中的一个错误,但可以通过向我的自定义组件添加图标来修复:
[DtsPipelineComponent(DisplayName = "ProperCase", IconResource="MyNamespace.app.ico")]
public class ProperCaseTransform : PipelineComponent
{
//irrelevant code here
}
然后我在dll中包含了一个随机图标文件(名为app.ico),将构建操作设置为“Embedded Resource”,并重新编译;这解决了视觉工作室的问题。
注意: IconResource
值的格式为:
[ProjectNamespace] + "." + "Folder path separated by dots" + "." + "iconName.ico"
项目名称空间在项目属性中定义。
示例:名称空间为MyIcon.ico
的项目中的文件夹图标中的图标MyProject
将具有图标资源值"MyProject.Icons.MyIcon.ico"