Невозможно создать BIML для компонента скрипта
Я пытаюсь создать простой поток, используя тег BIML
если я создаю поток данных вручную, то он работает отлично!
- мой поток данных имеет: SRC > SCRIPT-COMPONENT > TGT
- единственная логика, которую я добавил, состоит в том, чтобы вычислять номер строки для каждой входящей строки (пока сохраняя логику абсолютно простой)
когда ручное решение выполнено:
- последовательный номер строки хранится в таблице TGT (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.
Я не уверен, что происходит, когда я пытаюсь создать PKG, используя BIML:
- эти ошибки никогда не появлялись, когда я создавал пакет вручную (с тем же кодом)
- Я скопировал и вставил важные файлы C# из ручного решения в BIML
Вопросы / Идеи:
это как-то связано с GUID, который должен использоваться для ProjectCoreName, AssemblyProduct и AssemblyTitle?
- это автоматически генерируется каждый раз, когда BIML расширяется?
- если да, то как я могу создать GUID в самом BIML для этих элементов.. чтобы он работал сразу после расширения?
это как-то связано с последовательностью, в которой я должен создать файлы.cs в BIML, внутри тега
? - В настоящее время я предполагаю, что фактическая последовательность элементов
в теге не имеет отношения к BIML
- В настоящее время я предполагаю, что фактическая последовательность элементов
Может ли быть так, что я должен генерировать "Resources.resx/Resources.Designer.cs" и "Settings.settings/Settings.Designer.cs", а также в BIML?
действительно ли важно иметь раздел "#region Namespaces" в каждом файле.cs?
- Я удалил это из руководства soln.., которое все еще работало отлично!
Пожалуйста, помогите.
Заметки:
Я использую SSDT 2015 и Varigence BIMLExpress 2017 (сборка 5.0.61915.0)
Я знаю, что это очень легко сделать с помощью ROW_NUMBER() в SQLServer в самом SRC, но:
- Я использую OleDbSource в прилагаемом примере, чтобы просто
- наконец, мне придется сгенерировать сотни кодовых PKG с BIML, которые будут иметь SRC в виде плоского файла, а не OleDB.
- и, очевидно, я хотел бы, чтобы мои сгенерированные компоненты ScriptComponents работали сразу после расширения.. без каких-либо дополнительных ручных вмешательств:)
Thanx,
NP
Файл BIML: https://drive.google.com/file/d/10O3aSL5IO34ULS44wl7IX4LUmPH_pI6V/view?usp=sharing
1 ответ
Ошибка исчезнет, если вы поместите ваши классы в пользовательское пространство имен.
namespace SomeNamespace {
public class UserComponent: ScriptComponent
{
...
}
public class Connections
{
...
}
public class Variables
{
...
}
}
namespace SomeNamespace {
public class Input0Buffer: ScriptBuffer
{
...
}
}
Также одно замечание о (динамическом) создании нескольких пакетов из этого файла Biml: вам нужно будет присвоить динамическое имя пространства имен следующим образом:
namespace <#=variableContainingNamespaceName#> {
...
}
О ваших замечаниях:
- Эта проблема не связана с ProjectCoreName, но я боюсь, что вы можете столкнуться с проблемами, если повторно использовать один и тот же ProjectCoreName для нескольких пакетов, сгенерированных из одного BIML (без фактического тестирования).
- нет
- Не обязательно
- Нет, раздел не обязательно обязателен.