将字节数组传输到codedom给我一个错误

时间:2013-01-07 19:22:56

标签: c# codedom

嘿伙计们正在开发一个项目,我必须生成一个包含另一个可执行文件的字节数组的可执行文件,基本上我的程序加载一个可执行文件并将所有相应的字节存储在一个数组中,然后我给codom提供了源代码。可执行程序即将构建,然后我循环遍历包含可执行文件的bytearray,并在使用codedom编译之前将其添加到codedom源中的新bytearray

是否有更简单的方法在编译program2之前将bytearray从program1传递到program2的源?

我应该提一下,我已将源分为3部分,以便我可以将bytearray:S添加到源字符串O.o

我已查看完成的代码并且没有任何问题,但是当我用encodeom编译它时,我得到了以下错误

Error: C\Users\*myname*\AppData\Local\Temp\ycfx9ffp.0.cs(1,246) : error CS0031: Constant value '197185' cannot be converted to a 'byte'

我不知道如何调试该字符串lol:S

这是用于向源添加字节的循环:

foreach(byte mybyte in stryker)
        {
            if (mybyte != stryker[stryker.Length - 1])
                part2 += mybyte + ", ";
            else
                part2 += mybyte;
        }
        string source = part1 + part2 + part3;

2 个答案:

答案 0 :(得分:1)

这部分:

if (mybyte != stryker[stryker.Length - 1])
                part2 += mybyte + ", ";

似乎假设“stryker”中的字节是唯一的 - 也就是说,最后一个值(stryker [stryker.Length - 1])不会出现在其他地方。

是这样的吗?

答案 1 :(得分:1)

正如500指出的那样,如果字节数组中的字节与最后一个字节相同,则代码将无法正常工作,这很可能。

修复代码的最简单方法可能是使用库方法来组合字节:

part2 = string.Join(", ", stryker);

在源代码中包含一个字节数组对我来说听起来不是一个好主意。我认为你应该使用嵌入式资源。