无法为脚本组件生成 BIML
unable to generate BIML for script component
我正在尝试使用 BIML 标记创建一个简单的流程,但它对我不起作用!
如果我手动创建数据流,那么它工作得很好!
- 我的数据流有:SRC > SCRIPT-COMPONENT > TGT
- 我添加的唯一逻辑是计算每个传入行的行号(现在保持逻辑绝对简单)
执行手动解时:
- 顺序行号存储在 TGT table (test_np_02)
- 太棒了!
但是,当我尝试使用附加的 BIML 创建完全相同的包时,出现以下错误:
SSIS 输出日志:
Error 0 The namespace '<global namespace>' already contains a definition for 'Input0Buffer'. ...\Designer\BufferWrapper.cs 14 14
Error 0 The namespace '<global namespace>' already contains a definition for 'UserComponent'. ...\Designer\ComponentWrapper.cs 12 14
Error 0 The namespace '<global namespace>' already contains a definition for 'Connections'. ...\Designer\ComponentWrapper.cs 49 14
Error 0 The namespace '<global namespace>' already contains a definition for 'Variables'. ...\Designer\ComponentWrapper.cs 60 14
EmitSsis. Internal Compiler Error: Workflow EmitSsis contains fatal errors. Phase execution halted.
当我尝试使用 BIML 创建 PKG 时,我不确定出了什么问题:
- 当我手动创建包时(使用相同的代码)这些错误从未弹出
- 我将手动解决方案中的重要 C# 文件复制粘贴到 BIML 中
问题/想法:
是否与必须用于 ProjectCoreName、AssemblyProduct 和 AssemblyTitle 的 GUID 有关?
- 这是每次 BIML 展开时自动生成的吗?
- 如果是这样,我如何在 BIML 本身中为这些项目创建一个 GUID ..以便它在扩展后直接工作?
这与我必须在 BIML 中的 标记内创建 .cs 文件的顺序有关吗?
- 我目前假设
标签中 项的实际顺序与 BIML 无关
难道我必须在 BIML 中也生成 "Resources.resx/Resources.Designer.cs" 和 "Settings.settings/Settings.Designer.cs"?
在每个 .cs 文件中包含“#region 命名空间”部分真的很重要吗?
- 我从手动解决方案中删除了它..仍然工作正常!
请帮忙。
备注:
我正在使用 SSDT 2015 和 Varigence BIMLExpress 2017(内部版本 5.0.61915.0)
我知道这可以很容易地在 SRC 本身的 SQLServer 中使用 ROW_NUMBER() 来完成,但是:
- 为了简单起见,我在附加示例中使用了 OleDbSource
- 最后,我将不得不使用 BIML 生成数百个代码 PKG,它将 SRC 作为平面文件,而不是 OleDB。
- 显然,我希望我生成的 ScriptComponents 在扩展后立即运行......无需任何进一步的手动干预:)
谢谢,
NP
BIML 文件:https://drive.google.com/file/d/10O3aSL5IO34ULS44wl7IX4LUmPH_pI6V/view?usp=sharing
如果您将 类 包装在自定义命名空间中,错误将消失。
namespace SomeNamespace {
public class UserComponent: ScriptComponent
{
...
}
public class Connections
{
...
}
public class Variables
{
...
}
}
namespace SomeNamespace {
public class Input0Buffer: ScriptBuffer
{
...
}
}
关于(动态地)从此 Biml 文件创建多个包的评论:您将必须分配一个动态命名空间名称,如下所示:
namespace <#=variableContainingNamespaceName#> {
...
}
关于您的评论:
- 该问题与 ProjectCoreName 无关,但我担心如果您对从同一 biml 生成的多个包重复使用相同的 ProjectCoreName(没有实际测试),您可能 运行 会遇到问题
- 没有
- 不需要
- 不,该部分不是必需的。
我正在尝试使用 BIML
如果我手动创建数据流,那么它工作得很好!
- 我的数据流有:SRC > SCRIPT-COMPONENT > TGT
- 我添加的唯一逻辑是计算每个传入行的行号(现在保持逻辑绝对简单)
执行手动解时:
- 顺序行号存储在 TGT table (test_np_02)
- 太棒了!
但是,当我尝试使用附加的 BIML 创建完全相同的包时,出现以下错误:
SSIS 输出日志:
Error 0 The namespace '<global namespace>' already contains a definition for 'Input0Buffer'. ...\Designer\BufferWrapper.cs 14 14
Error 0 The namespace '<global namespace>' already contains a definition for 'UserComponent'. ...\Designer\ComponentWrapper.cs 12 14
Error 0 The namespace '<global namespace>' already contains a definition for 'Connections'. ...\Designer\ComponentWrapper.cs 49 14
Error 0 The namespace '<global namespace>' already contains a definition for 'Variables'. ...\Designer\ComponentWrapper.cs 60 14
EmitSsis. Internal Compiler Error: Workflow EmitSsis contains fatal errors. Phase execution halted.
当我尝试使用 BIML 创建 PKG 时,我不确定出了什么问题:
- 当我手动创建包时(使用相同的代码)这些错误从未弹出
- 我将手动解决方案中的重要 C# 文件复制粘贴到 BIML 中
问题/想法:
是否与必须用于 ProjectCoreName、AssemblyProduct 和 AssemblyTitle 的 GUID 有关?
- 这是每次 BIML 展开时自动生成的吗?
- 如果是这样,我如何在 BIML 本身中为这些项目创建一个 GUID ..以便它在扩展后直接工作?
这与我必须在 BIML 中的
标记内创建 .cs 文件的顺序有关吗? - 我目前假设
标签中 项的实际顺序与 BIML 无关
- 我目前假设
难道我必须在 BIML 中也生成 "Resources.resx/Resources.Designer.cs" 和 "Settings.settings/Settings.Designer.cs"?
在每个 .cs 文件中包含“#region 命名空间”部分真的很重要吗?
- 我从手动解决方案中删除了它..仍然工作正常!
请帮忙。
备注:
我正在使用 SSDT 2015 和 Varigence BIMLExpress 2017(内部版本 5.0.61915.0)
我知道这可以很容易地在 SRC 本身的 SQLServer 中使用 ROW_NUMBER() 来完成,但是:
- 为了简单起见,我在附加示例中使用了 OleDbSource
- 最后,我将不得不使用 BIML 生成数百个代码 PKG,它将 SRC 作为平面文件,而不是 OleDB。
- 显然,我希望我生成的 ScriptComponents 在扩展后立即运行......无需任何进一步的手动干预:)
谢谢,
NP
BIML 文件:https://drive.google.com/file/d/10O3aSL5IO34ULS44wl7IX4LUmPH_pI6V/view?usp=sharing
如果您将 类 包装在自定义命名空间中,错误将消失。
namespace SomeNamespace {
public class UserComponent: ScriptComponent
{
...
}
public class Connections
{
...
}
public class Variables
{
...
}
}
namespace SomeNamespace {
public class Input0Buffer: ScriptBuffer
{
...
}
}
关于(动态地)从此 Biml 文件创建多个包的评论:您将必须分配一个动态命名空间名称,如下所示:
namespace <#=variableContainingNamespaceName#> {
...
}
关于您的评论:
- 该问题与 ProjectCoreName 无关,但我担心如果您对从同一 biml 生成的多个包重复使用相同的 ProjectCoreName(没有实际测试),您可能 运行 会遇到问题
- 没有
- 不需要
- 不,该部分不是必需的。