相关疑难解决方法(0)

C#XmlSerializer BindingFailure

我使用XmlSerializer在一行代码上得到一个BindingFailure:

XmlSerializer s = new XmlSerializer(typeof(CustomXMLSerializeObject));
Run Code Online (Sandbox Code Playgroud)

具有显示名称CustomXMLSerializeObject.XmlSerializers'的程序集无法加载到ID为1的AppDomain的"LoadFrom"绑定上下文中.失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集XMLSerializeObject.XmlSerializers,Version = 1.4.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.该系统找不到指定的文件.

错误很长,继续解释预绑定状态信息以及它试图找到文件的位置.

我试图去序列化的自定义对象相对简单 - 只是一堆私有整数和具有公共访问器的字符串.我有一个私有变量,它是另一个自定义的可序列化类,但它只有私有字符串,其中包含公共访问器.

尴尬的部分?这只在我反序列化时发生.当我序列化对象时,那行代码运行正常.它工作正常,对象被反序列化并完美填充.不要注意任何性能损失或加载时间过长.

这个警告究竟是什么(不是错误或异常,之后程序运行良好)?为什么会这样?如何在不简单禁用警告的情况下阻止它?

.net c# visual-studio-2008 xmlserializer

46
推荐指数
2
解决办法
3万
查看次数

Encoding.UTF8.GetString没有考虑Preamble/BOM

在.NET中,我正在尝试使用Encoding.UTF8.GetString方法,它接受一个字节数组并将其转换为string.

看起来这种方法忽略了BOM(字节顺序标记),它可能是UTF8字符串的合法二进制表示的一部分,并将其作为字符.

我知道我可以TextReader根据需要使用a 来消化BOM,但我认为GetString方法应该是某种使我们的代码更短的宏.

我错过了什么吗?这是故意的吗?

这是一个复制代码:

static void Main(string[] args)
{
    string s1 = "abc";
    byte[] abcWithBom;
    using (var ms = new MemoryStream())
    using (var sw = new StreamWriter(ms, new UTF8Encoding(true)))
    {
        sw.Write(s1);
        sw.Flush();
        abcWithBom = ms.ToArray();
        Console.WriteLine(FormatArray(abcWithBom)); // ef, bb, bf, 61, 62, 63
    }

    byte[] abcWithoutBom;
    using (var ms = new MemoryStream())
    using (var sw = new StreamWriter(ms, new UTF8Encoding(false)))
    {
        sw.Write(s1);
        sw.Flush();
        abcWithoutBom = ms.ToArray();
        Console.WriteLine(FormatArray(abcWithoutBom)); // 61, 62, …
Run Code Online (Sandbox Code Playgroud)

.net unicode byte-order-mark character-encoding

25
推荐指数
3
解决办法
9281
查看次数

附加\ 0(反斜杠0或Null)字符的Xml序列化?

我试图序列化一个对象,并将\ 0(空)字符附加到生成的字符串.为什么?

我的代码:

 XmlSerializer serializer = new XmlSerializer(typeof(Common.PlanogramSearchOptions));
 MemoryStream memStream = new MemoryStream();
 serializer.Serialize(memStream, searchOptions);

 string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0
Run Code Online (Sandbox Code Playgroud)

我的工作是用空字符串替换Null字符

xml.Replace("\0", string.Empty)
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# xml-serialization

5
推荐指数
1
解决办法
4277
查看次数

Dynamics CRM插件共享变量-对象或数组

我们有一个场景,我们需要计算多个费用组成部分,并需要在插件的Pre和Post阶段之间共享。因此,我们创建了这样的对象。

class FeeCalculation
    {
        public string TotalFee { get; set; }
        public string FilingFee { get; set; }
        public string LegalFee { get; set; }
        public string RecordFee { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我们已经使用单一费用组成部分和共享变量很好地工作了。尝试分配整个对象时-结果并不理想。

context.SharedVariables.Add("fees", fcObject);
Run Code Online (Sandbox Code Playgroud)

有没有办法达到这个预期的结果?

c# microsoft-dynamics crm dynamics-crm dynamics-crm-2015

1
推荐指数
1
解决办法
272
查看次数