我在Visual Studio 2013上使用TFS很好。最近我切换到VS 2015,并遇到了一个烦人的问题(错误?)。
我有一堆我不想提交但希望保留在本地的未决更改(坏的开发环境,不要问)。我的问题是,每次我重新打开VS 2015时,所有排除的更改都将重新包含到包含的更改中,并且我必须手动重新排除所有我不想提交的内容。
如果我打开VS 2013,则包含/排除的更改仍处于完美状态!谁知道是什么原因导致VS 2015如此混乱?
我正在使用svcutil从webservice生成客户端代理.WSDL包含将属性minOccurs设置为0的元素
<xsd:element minOccurs="0" name="dateMaxValue" type="xsd:dateTime"></xsd:element>
Run Code Online (Sandbox Code Playgroud)
但是,生成的DataContract会完全忽略此属性,只需创建一个普通的dateMaxValue属性,而不使用任何dateMaxValueSpecified属性
private System.DateTime dateMaxValueField;
Run Code Online (Sandbox Code Playgroud)
当我使用选项/序列化器生成代理:XmlSerializer时,我得到了xxxSpecified属性.
private System.DateTime dateMaxValueField;
private bool dateMaxValueFieldSpecified;
Run Code Online (Sandbox Code Playgroud)
编辑
对于可选字段,我希望字段没有被发送或没有被读取时没有值(与XmlSerializer相当于指定= false)当前传入和传出数据被设置为默认值.如何使用DataContractSerializer获得类似的行为?或者如果它已经存在,我该如何使用它?
我遇到了XElement和Culture的问题.
我的当地文化是法国人.浮动值使用逗号而不是点编写.
Console.WriteLine(1.1d);
//1,1
Run Code Online (Sandbox Code Playgroud)
但是,当我在XElement中放入一个double时,它以美国格式存储.
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
Console.WriteLine(myXmlElement.Value);
//1.1
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试解析我的XElement的值时,我得到一个FormatException.
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
double myDouble = double.Parse(myXmlElement.Value);
//Throws a FormatException
Run Code Online (Sandbox Code Playgroud)
我发现这种行为真的很奇怪.当我写一个XDoucment时,它不是写在应用程序或线程的文化中,而是总是在美国文化中.我错过了什么吗?我有一些解决方法来表现我期望的方式,但我发现它们并非"干净".
//This will work
XElement myXmlElement = new XElement("ADoubleElement", 1.1d.ToString());
double myDouble = double.Parse(myXmlElement.Value);
//This will also work but if I write XElement, it will not have the correct Culture
XElement myXmlElement = new XElement("ADoubleElement", 1.1d);
double myDouble = (double)myXmlElement;
Run Code Online (Sandbox Code Playgroud)