我正在使用Azure Storage SDK中的类调用CloudQueueMessage
,它具有以下两个构造函数:
public CloudQueueMessage(byte[] content);
public CloudQueueMessage(string content);
我有一些二进制数据要传递给这个类,因此我想使用接受byte[]
的构造函数。这是我正在尝试做的一个人为的例子:
byte[] data = ... binary data goes here ...;
var cloudMessage = new CloudQueueMessage(data);
令人惊讶的是,我在Visual Studio中遇到以下编译器错误:
CS1503参数1:无法从'byte []'转换为'string'
好像编译器试图使用接受字符串的重载,当然,无法将我的字节数组转换为字符串。
请注意,我不想将我的字节数组转换为字符串,我只需要帮助找出编译器没有使用适当的构造函数的原因。
如果重要:我使用的是Azure存储nuget软件包的8.1.1版。
答案 0 :(得分:1)
您可以深入了解构造函数的定义并查看它的引用位置吗?听起来我觉得某处存在版本冲突。
在根应用程序的bin文件夹中的Microsoft.WindowsAzure.Storage.dll
上使用ILDASM,然后导航到CloudQueueMessage
类,看看是否可以找到相同的构造函数。您的应用似乎在某种程度上在运行时使用了早期版本。
您是否也清除了所有obj和bin文件夹和包文件夹?
答案 1 :(得分:0)
我终于发现public CloudQueueMessage(byte[] content)
仅在.NET 4.x中可用,并且它在.NET Core中不可用(我想知道为什么在.NET核心中删除了这个重载的构造函数)。< / p>
因此,我在.NET Core中使用以下解决方法:
var cloudMessage = new CloudQueueMessage(string.Empty);
cloudMessage.SetMessageContent(data);