Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 用参数值替换硬编码时出现问题_Visual Studio_Ssis_Sql Server 2017_Biml_Ssis 2017 - Fatal编程技术网

Visual studio 用参数值替换硬编码时出现问题

Visual studio 用参数值替换硬编码时出现问题,visual-studio,ssis,sql-server-2017,biml,ssis-2017,Visual Studio,Ssis,Sql Server 2017,Biml,Ssis 2017,我的BIML文件中有此结构: myColumns = myFile.ReadLine().Replace("\"","").Split('|'); 我想用以下内容代替: myColumns = myFile.ReadLine().Replace("\"","").Split('<#=delimiter#>'); 它告诉我无法将类型“string”隐式转换为“char” 分隔符声明为

我的BIML文件中有此结构:

myColumns = myFile.ReadLine().Replace("\"","").Split('|');
我想用以下内容代替:

myColumns = myFile.ReadLine().Replace("\"","").Split('<#=delimiter#>');
它告诉我
无法将类型“string”隐式转换为“char”

分隔符声明为
字符串分隔符=“|”


将其更改为
char delimiter=“|”
时,我会得到完全相同的错误,但在我声明delimiter的那一行…

如果我理解正确,文件的这一部分:

myColumns = myFile.ReadLine().Replace("\"","").Split('|');
将已包含在代码块或单独的代码文件中,是吗?如果是这样,您不需要使用另一个代码块来参数化
delmiter
,只要引用变量,假设您已经在某个地方声明了它:

<#
...
char delimiter = '|';
...
var myColumns = myFile.ReadLine().Replace("\"","").Split(delimiter);
...
#>

...

在本例中,您可以看到C代码是如何包含在带有原始Biml的
标记中的。使用
标记是引用先前定义的C#变量的语法快捷方式。显然,只有当您在文件的Biml部分中,而不是在代码块中时,这些才是必需的。

如果我理解正确,文件的这一部分:

myColumns = myFile.ReadLine().Replace("\"","").Split('|');
将已包含在代码块或单独的代码文件中,是吗?如果是这样,您不需要使用另一个代码块来参数化
delmiter
,只要引用变量,假设您已经在某个地方声明了它:

<#
...
char delimiter = '|';
...
var myColumns = myFile.ReadLine().Replace("\"","").Split(delimiter);
...
#>

...

在本例中,您可以看到C代码是如何包含在带有原始Biml的
标记中的。使用
标记是引用先前定义的C#变量的语法快捷方式。显然,只有当您在文件的Biml部分中,而不是在代码块中时,这些才是必需的。

我想这就是c的工作方式,但这些是Bimlfiles@Henrov是的,但BIML是一种类似XML的语法,可以在代码块中包含C代码,如标记所示。不能只在文件中的任何地方使用C#,它必须在代码块中。如果您可以在问题中发布更多的Biml文件,您的Biml和C#部分的开始和结束位置应该非常明显。@Henrov我已经添加了一些关于C#如何在Biml文件中工作的解释,这将有助于您理解其工作原理。我将尝试此方法。@Henrov问题就在您的错误消息中:错误:参数1:无法从“字符串”转换为“字符”-当
Split
函数需要
char
数据类型时,您试图使用
string
数据类型作为分隔符。在C语言中,您可以通过使用单引号的
char
和使用双引号的字符串
看到这种区别,根据您的示例代码,
Replace
采用
string
数据类型和
Split
a
char
.Replace(“\”,”).Split('124;)我想这就是c的工作原理,但这些是BIMLfiles@Henrov是的,但BIML是一种类似XML的语法,可以在代码块中包含C代码,如标记所示。不能只在文件中的任何地方使用C#,它必须在代码块中。如果您可以在问题中发布更多的Biml文件,您的Biml和C#部分的开始和结束位置应该非常明显。@Henrov我已经添加了一些关于C#如何在Biml文件中工作的解释,这将有助于您理解其工作原理。我将尝试此方法。@Henrov问题就在您的错误消息中:错误:参数1:无法从“字符串”转换为“字符”-当
Split
函数需要
char
数据类型时,您试图使用
string
数据类型作为分隔符。在C语言中,您可以通过使用单引号的
char
和使用双引号的字符串
看到这种区别,根据您的示例代码,
Replace
采用
string
数据类型和
Split
a
char
.Replace(“\”,”).Split('124;)
字符分隔符=“|”失败,因为字符使用单个记号,因此
char delimiter='|'
@billinkc只是一个吹毛求疵的地方,但它使用单引号
'
而不是反勾选'或“前勾选”
'
characters@iamdave是的,我发现当我告诉人们单引号时,他们可以将其解释为一个双引号
因此,我习惯于将一个引号称为勾号,将反勾号称为反勾号。我不知道有一个向前的记号,也就是
char delimiter=“|”失败,因为字符使用单个记号,因此
char delimiter='|'
@billinkc只是一个吹毛求疵的地方,但它使用单引号
'
而不是反勾选'或“前勾选”
'
characters@iamdave是的,我发现当我告诉人们单引号时,他们可以将其解释为一个双引号
因此,我习惯于将一个引号称为勾号,将反勾号称为反勾号。我不知道有向前的滴答声,又名
...
 <Tables>
  <Table Name="TableName" etc>
    <Columns>
    <# // This is the start of a Code Block

     // We can define some C# data structures
     char delimiter = '|';
     var myColumns = myFile.ReadLine().Replace("\"","").Split(delimiter);

     // Then start a loop which will generate some Biml nodes
     foreach(string col in myColumns)
     {
      // Note that the foreach loop is left open despite closing the code block on the next line.
      // This means the following Biml is looped over until the foreach ends.
    #>
     <Column Name="<#=col#>" etc />
    <# // We can then start another code block which carries on from the last one
     } // This closes the foreach loop defined earlier
    #>
    </Columns>
  </Table>
 </Tables>
...